Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python &引用;用户的访问被拒绝”;当密码包含特殊字符时_Python_Mysql_Sqlalchemy - Fatal编程技术网

Python &引用;用户的访问被拒绝”;当密码包含特殊字符时

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中很好地查询

为了解决这个问题,我已经在网上搜索了好几天了。有很多类似的问题,但似乎没有一个是我目前正在处理的问题。我正在尝试用python连接到一个远程MySQL数据库,以使用pandas.to_sql特性来更新表。我能够毫无问题地连接MySQL workbench。我还可以使用以下代码进行连接:

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编码有效!如果您想发布答案,我将接受!非常感谢!