Я искал все ответы на сайте. Не нашел исправления, поэтому хочу документировать это решение, чтобы помочь другим людям, сталкивающимся с подобной ситуацией.
Виновник прекращения работы 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
ошибка исчезла.