ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
该命令在调试python使用pymysql连接数据库出现错误时,
报错为pymysql.err.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: NO)")
mysql -u root -p密码登录mysql后台输入命令
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
再次尝试连接数据库,报错变为
pymysql.err.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")
最后是按照这篇文章末尾执行这两句命令,pymysql就正常连接了
ALTER USER '你的mysql用户名'@'localhost' IDENTIFIED WITH 'mysql_native_password' BY '用户对应的密码';
FLUSH PRIVILEGES;
WINDOWS环境下的MYSQL安装 - comeluder - 博客园
pymysql连接mysql 1045错误
在使用 PyMySQL 连接 MySQL 数据库时遇到错误代码 1045,通常表示访问被拒绝。这个错误通常是由于以下原因引起的:
-
错误的用户名或密码:最常见的原因是提供的用户名或密码不正确。
-
权限不足:用户可能没有足够的权限来访问特定的数据库。
-
用户未被授权:用户可能被创建,但没有被授权访问任何数据库。
解决步骤
1. 检查用户名和密码
确保你在连接数据库时使用的用户名和密码是正确的。可以从 MySQL 命令行工具尝试登录,例如:
mysql -u yourusername -p
然后输入密码。如果可以成功登录,那么用户名和密码就是正确的。
2. 检查用户权限
登录到 MySQL 后,你可以检查用户的权限:
SELECT user, host FROM mysql.user;
SHOW GRANTS FOR 'yourusername'@'yourhost';
这里 yourusername
是你的用户名,yourhost
是你的主机名(通常是 localhost 或一个 IP 地址)。这将显示该用户是否有权访问任何数据库。
3. 授权用户
如果用户没有权限,你可以授予他们权限。例如,要授予用户对特定数据库的访问权限,可以使用以下命令:
GRANT ALL PRIVILEGES ON databasename.* TO 'yourusername'@'yourhost';
FLUSH PRIVILEGES;
将 databasename
替换为你的数据库名。
4. 使用 PyMySQL 连接
确保你的 PyMySQL 连接字符串正确。例如:
import pymysql
connection = pymysql.connect(host='localhost',
user='yourusername',
password='yourpassword',
database='databasename')
替换 yourusername
, yourpassword
, 和 databasename
为你的实际用户名、密码和数据库名。
示例代码
import pymysql
from pymysql.err import OperationalError
try:
connection = pymysql.connect(host='localhost',
user='yourusername',
password='yourpassword',
database='databasename')
print("Connection successful")
except OperationalError as e:
print(f"Error: {e}")
finally:
if connection:
connection.close()
注意事项
-
确保 MySQL 服务正在运行。
-
检查防火墙设置,确保没有阻止 MySQL 的默认端口(通常是 3306)。
-
使用正确的字符编码和连接参数,例如
charset='utf8mb4'
。
通过上述步骤,你应该能够解决因错误代码 1045 而导致的连接问题。如果问题仍然存在,请检查 MySQL 服务器的日志文件以获取更详细的错误信息。
以上都尝试了,依然连接不上