配置:python3.6+pymysql+mysql8.0.21
问题:终端命令可正常进行连接mysql服务,pycharm中代码连接mysql报错
代码:
import pymysql
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='password',db='auto_api',
charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor)
# 通过cursor创建游标
cursor = conn.cursor()
# 创建sql 语句
sql = "select * from api_id"
# 执行sql语句
cursor.execute(sql)
# 获取所有记录列表
results = cursor.fetchall()
print(results)
cursor.close() # 关闭游标连接
conn.close() # 关闭数据库连接
运行结果:
pymysql.err.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: NO)")
解决方案:更换root密码的认证方式-新版mysql使用的caching_sha2_password,换成mysql_native_password
步骤:
1、终端命令行连接mysql:
mysql -u root -p
2、输入mysql登录密码
3、输入命令:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
4、回车执行命令
5、返回下面内容代表执行成功
Query OK, 0 rows affected (0.01 sec)
结果:再次执行pycharm中的代码成功返回数据库内容