python 3.6无法连接到mysql(8.0)
新手入门python基础教程中用mysql-connector连接数据库
菜鸟教程中代码:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost", # 数据库主机地址
user="yourusername", # 数据库用户名
passwd="yourpassword" # 数据库密码
)
print(mydb)
运行出现错误:
“Authentication plugin ‘{0}’ is not supported”.format(plugin_name))
mysql.connector.errors.NotSupportedError: Authentication plugin ‘caching_sha2_password’ is not supported
-
解决方法:
-
1、在网上搜索到原因是 mysql新版本(8.0以上)将root用户使用的plugin更新成caching_sha2_password。
登录到mysql,输入命令:
ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘你的root密码’;
FLUSH PRIVILEGES; #刷新权限
2、直接换别的库,PyMySQL
它是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。
import pymysql
db = pymysql.connect(“localhost”,“root”,你的密码",“TESTDB” )
cursor = db.cursor() # 使用 execute() 方法执行 SQL 查询
cursor.execute(“SELECT VERSION()”)
data = cursor.fetchone()
print ("Database version : %s " % data)
db.close()
运行正确