è·Ÿç�€è�œé¸Ÿæ•™ç¨‹å¦ä¹ Python3 进行到 python3 mysql(mysql-connector),然å�Žå®‰è£…mysql-8.0.16,照ç�€ç¤ºä¾‹ç¨‹åº�è¿�行 python,é�‡åˆ°è¿™ä¸ªå¤§å¤§çš„问题:
authentication plugin 'calling_sha2_password' is not supported.
åœ¨ç½‘ä¸Šæ‰¾äº†æ— æ•°ç”æ¡ˆï¼ŒçŽ°åœ¨æ�¥æ€»ç»“一下。
æ ¹ç›®å½•ä¸‹æ–°å»º my.ini 文件,设置 MySQL å¤�制以下é…�置信æ�¯åˆ°æ–°å»ºçš„ my.ini 文件ä¸ã€‚
[mysqld] # 设置3306端å�£ port = 3306 # 设置mysql的安装目录 basedir=D:\\web\\mysql-8.0.16-winx64 # 设置 mysqlæ•°æ�®åº“的数æ�®çš„å˜æ”¾ç›®å½•,MySQL 8+ ä¸�需è¦�以下é…�置,系统自己生æˆ�å�³å�¯ï¼Œå�¦åˆ™æœ‰å�¯èƒ½æŠ¥é”™ # datadir=D:\\web\\sqldata # å…�许最大连接数 max_connections=20 # æœ�务端使用的å—符集默认为8比特编ç �çš„latin1å—符集 character-set-server=utf8 # 创建新表时将使用的默认å˜å‚¨å¼•擎 default-storage-engine=INNODB # 默认使用“mysql_native_password”æ�’件认è¯� default_authentication_plugin=mysql_native_password [mysql] # 设置mysql客户端默认å—符集 default-character-set=utf8 [client] # 设置mysql客户端连接æœ�务端时默认使用的端å�£ port=3306 default-character-set=utf8  
在 MySQL 8.0 ä¸éªŒè¯�æ�’件和密ç �åŠ å¯†æ–¹å¼�å�‘生了å�˜åŒ–,caching_sha2_password 是默认的身份验è¯�æ�’件而ä¸�是之å‰�版本的 mysql_native_password。
使用指令:
use mysql; select plugin,authentication_string from user;
查看。
å› æ¤å¦‚果需è¦�ä¿�æŒ�之å‰�的验è¯�æ–¹å¼�å¹¶ä¿�æŒ�之å‰�版本的密ç �åŠ å¯†æ–¹å¼�需è¦�在é…�置文件ä¸ä¿®æ”¹ï¼Œæš‚ä¸�支æŒ�动æ€�修改,需è¦�é‡�å�¯ç”Ÿæ•ˆã€‚å�³ï¼š
# 默认使用 mysql_native_password �件认� default_authentication_plugin=mysql_native_password 
å°† 8.0 已有的 sha2 密ç �修改为 sha1 的模å¼�:
# ä¿®æ”¹åŠ å¯†è§„åˆ™ä¸ºæ°¸ä¸�过期 #注æ„�:password æ”¹ä¸ºä½ çš„å¯†ç �,别è€�è€�实实照抄,之å‰�本人便以为 password 指代密ç �ä¸�用改å�˜ï¼Œç»“果一通指令下去,mysql ç™»ä¸�上了,å�ªå¥½é‡�æ–°åˆ�始化数æ�®åº“ ALTER USER 'root'@'127.0.0.1' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #更新一下用户的密ç �åŠ å¯†æ–¹å¼�为之å‰�版本的方å¼� ALTER USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY 'password';     #刷新æ�ƒé™� FLUSH PRIVILEGES;
��,这是�看,已�修改了身份验��件。
这时���修改实例程�,便�以连接了:
import mysql.connector
mydb=mysql.connector.connect(
host="localhost",
user="ly",
passwd="123456",
auth_plugin='mysql_native_password'
)
print(mydb)