Python &引用;用户的访问被拒绝”;当密码包含特殊字符时
为了解决这个问题,我已经在网上搜索了好几天了。有很多类似的问题,但似乎没有一个是我目前正在处理的问题。我正在尝试用python连接到一个远程MySQL数据库,以使用pandas.to_sql特性来更新表。我能够毫无问题地连接MySQL workbench。我还可以使用以下代码进行连接:Python &引用;用户的访问被拒绝”;当密码包含特殊字符时,python,mysql,sqlalchemy,Python,Mysql,Sqlalchemy,为了解决这个问题,我已经在网上搜索了好几天了。有很多类似的问题,但似乎没有一个是我目前正在处理的问题。我正在尝试用python连接到一个远程MySQL数据库,以使用pandas.to_sql特性来更新表。我能够毫无问题地连接MySQL workbench。我还可以使用以下代码进行连接: self.conn = mysql.connector.connect(host= remote_host,user= db_user, password=db_pass) 这使我能够在python中很好地查询
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\u引擎
连接到本地数据库,但不能连接到远程数据库
我已尝试在服务器上重新启动MySQL,我已将所有权限授予用户,并刷新了服务器上的所有权限。我甚至尝试过使用root用户和密码,但都没有成功
我仔细检查了用户名和密码,当然知道它们是正确的,因为它们是我在MySQL Workbench中使用的,另外,当我只使用MySQL.connector.connect时
我甚至尝试卸载mysql连接器python
并重新安装它
任何帮助都将不胜感激。如果数据库URL的任何组成部分可能包含可能会使URL解析器混淆的特殊字符,最好让sqlalchemy.engine.URL.URL
为您构建URL。例如:
将sqlalchemy作为sa导入
connection\u url=sa.engine.url.url(drivername=“mysql+pymysql”,
username=“db\u user”,
password=“my:password”,
host=“localhost”,
port=“3307”,
database=“mydb”,
)
打印(连接地址)
#mysql+pymysql://db_user:my%3Apassword@本地主机:3307/mydb
请注意,密码中的冒号字符按百分比编码为%3A
,我认为这是您需要与数据库管理员讨论的问题。看起来您的权限受到限制。我不知道MySQL是如何工作的,但我假设连接字符串试图建立一个您无权建立的连接。实际密码是否包含任何可能会混淆问题的字符(如空格、:
、/
、@
、?
、&
,…)并且可能需要对字符串进行URL编码?密码中有$,),&,[,{,%,]等符号。URL编码有效!如果您想发布答案,我将接受!非常感谢!