Python2.7连接MySQL8.0

import MySQLdb

conn = MySQLdb.connect(host='192.168.3.94',
                       user='root', 
                       passwd='123456', 
                       port=3306,
                       charset='utf8')

conn.select_db('test')
cur = conn.cursor()

a = cur.execute('select * from users;')

print(a)

conn.close()

报错:

_mysql_exceptions.OperationalError: (1251, 'Client does not support authentication protocol requested by server; consider upgrading MySQL client')

经搜索,是保存密码的加密方式不同导致,改为以前的加密方式即可解决:

mysql -u root -p
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
mysql> FLUSH PRIVILEGES;

这里的'root'@'%',是经过我修改后的,默认应该为'root'@'localhost'
可以输入SQL命令查看:

mysql> use mysql;
mysql> select host,user from user;

想要将它从localhost改为%只需要:

mysql> update user set host = '%' where user = 'root';
mysql> flush privileges;

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容