【问题标题】:"Access denied for user" when password contains special characters [duplicate]密码包含特殊字符时“用户访问被拒绝”[重复]
【发布时间】:2020-05-26 03:04:42
【问题描述】:

我几天来一直在搜索 SO 和网络,试图解决这个问题。关于 SO 有很多类似的问题,但它们似乎都不是我目前正在处理的问题。我正在尝试连接到 python 中的远程 MySQL 数据库以使用 pandas.to_sql 功能更新表。我能够毫无问题地连接 MySQL 工作台。我也可以使用以下代码进行连接:

self.conn = mysql.connector.connect(host= remote_host,user= db_user, password=db_pass)

这使我可以在 python 中很好地查询数据库。但是,为了使用 pandas.to_sql,我需要使用 sqlalchemy 创建和引擎。我尝试了多个不同的端口,甚至关闭了端口。这是我尝试过的代码:

self.engine = create_engine("mysql+mysqlconnector://db_user:db_pass@remote_host:3306/db_name")

他们都给我以下错误

ProgrammingError: (mysql.connector.errors.ProgrammingError) 1045 (28000): Access denied for user 'db_user'@'c-67-176-125-82.hsd1.co.comcast.net' (using password: YES) (Background on this error at: http://sqlalche.me/e/f405)

我可以使用create_engine 连接到本地数据库,但不能连接到远程数据库。

我已尝试在服务器上重新启动 MySQL,我已将所有权限授予用户并刷新了服务器上的所有权限。我什至尝试使用 root 用户和密码,但没有成功。

我仔细检查了用户名和密码,当然知道它们是正确的,因为它们是我在 MySQL Workbench 中使用的,而且当我只使用 mysql.connector.connect 时,它们是正确的

我什至尝试卸载 mysql-connector-python 并重新安装它。

任何帮助将不胜感激。

【问题讨论】:

  • 我认为这是您需要与数据库管理员讨论的问题。看起来您的权限受到限制。我不确切知道 MySQL 是如何工作的,但我假设连接字符串试图建立一个您无权建立的连接
  • 实际密码是否包含任何可能混淆问题的字符(空格、:/@?&、...)和可能要求字符串是 URL 编码的?
  • 密码中有$,),&,[,{,%,]等符号。 URL 编码有效!如果您想发布答案,我会接受!非常感谢!

标签: python mysql sqlalchemy


【解决方案1】:

如果数据库 URL 的任何组成部分可能包含可能会混淆 URL 解析器的特殊字符,最好让 sqlalchemy.engine.url.URL 为您构建 URL。例如:

import sqlalchemy as sa

connection_url = sa.engine.url.URL(drivername="mysql+pymysql",
                                   username="db_user",
                                   password="my:password",
                                   host="localhost",
                                   port="3307",
                                   database="mydb",
                                   )
print(connection_url)
# mysql+pymysql://db_user:my%3Apassword@localhost:3307/mydb

请注意,密码中的冒号字符被百分比编码为%3A

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-07
    • 1970-01-01
    • 2020-10-10
    • 2018-01-14
    • 2013-12-29
    • 2021-04-12
    • 1970-01-01
    • 2016-07-11
    相关资源
    最近更新 更多