首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当密码包含特殊字符时,“拒绝用户访问”

问当密码包含特殊字符时,“拒绝用户访问”
EN

Stack Overflow用户
提问于 2020-02-10 18:37:49
回答 1查看 1.5K关注 0票数 1

为了解决这个问题,我已经在网上搜索了好几天了。在这方面有很多类似的问题,但这些问题似乎都不是我目前正在处理的问题。我正在尝试连接到python中的远程MySQL数据库,以使用pandas.to_sql特性更新表。我能够与MySQL工作台连接,没有任何问题。我还可以使用以下代码进行连接:

代码语言:javascript
复制
self.conn = mysql.connector.connect(host= remote_host,user= db_user, password=db_pass)

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

代码语言:javascript
复制
self.engine = create_engine("mysql+mysqlconnector://db_user:db_pass@remote_host:3306/db_name")

他们都给了我以下错误

代码语言:javascript
复制
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,我已经将所有特权授予用户,并刷新了服务器上的所有特权。我甚至尝试使用根用户和密码,但没有成功。

我反复检查了用户名和密码,当然知道它们是正确的,因为它们是我在MySQL工作台中使用的,另外,当我只使用mysql.connector.connect时

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

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-10 23:36:18

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

代码语言:javascript
复制
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的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60156446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档