MySQL Python客户端得到1045(28000):拒绝用户'root'@'localhost'的访问

2024-03-29 05:29:01 发布

您现在位置:Python中文网/ 问答频道 /正文

此错误同时发生在pymysqlmysql-connector-python。但不是MySQL外壳。MySQL shell通常可以通过mysql -u root -p登录。在

错误如下:

In [1]: import mysql.connector

In [2]: mydb = mysql.connector.connect(
   ...:   host="localhost",
   ...:   user="root",
   ...:   passwd="password"
   ...: )

ProgrammingError: 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

或者

^{pr2}$

Python3.7版,运行在MacOSX10.14上。MySQL8.0.16版。在


Tags: inimportlocalhostconnectorconnect错误mysqlroot
1条回答
网友
1楼 · 发布于 2024-03-29 05:29:01

我在网站上搜索了所有的答案。没有找到解决办法,所以想把这个解决方案记录下来,以帮助其他遇到类似情况的人。在

pymysql停止工作的罪魁祸首应该是升级到MySQL 8。MySQL 8的密码验证比之前的5.7更强。从8级降到5.7级是我不想经历的痛苦。通过编辑my.cnf恢复到传统身份验证的简单尝试没有成功。在

然后我读了这个博客:https://blog.csdn.net/zoe9698/article/details/78171465(中文)。在

基本上是说用户不应该是root。Python连接被认为是“远程”的,因此禁止记录为root。在

所以只需创建另一个用户并将所有特权授予它。在

mysql> CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost';
Query OK, 0 rows affected (0.00 sec)

将代码中的root替换为user,错误就消失了。在

相关问题 更多 >