python出现 1045, "Access denied for user 'root'@'localhost' (using password: NO)"
时间: 2023-12-20 12:32:07 浏览: 45
当Python出现"1045, Access denied for user 'root'@'localhost' (using password: NO)"错误时,这意味着你正在尝试使用root用户连接到MySQL数据库,但没有提供密码。这可能是因为你的MySQL服务器配置要求提供密码才能访问root用户。
解决这个问题的方法有两种:
1. 在连接MySQL时提供密码:
```python
import mysql.connector
# 创建连接
cnx = mysql.connector.connect(user='root', password='your_password', host='localhost')
# 进行其他操作...
# 关闭连接
cnx.close()
```
2. 修改MySQL服务器配置,允许root用户无需密码登录:
- 打开MySQL配置文件(通常是my.cnf或my.ini)。
- 在[mysqld]部分添加或修改以下行:
```
skip-grant-tables
```
- 保存并关闭配置文件。
- 重启MySQL服务器。
- 使用以下命令连接到MySQL并设置root用户的密码:
```shell
mysql -uroot
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('your_password');
FLUSH PRIVILEGES;
```
- 修改MySQL配置文件,将之前添加的行注释掉或删除。
- 保存并关闭配置文件。
- 重启MySQL服务器。
请注意,第二种方法会使root用户无需密码即可登录MySQL,这可能会降低安全性。因此,建议在生产环境中使用第一种方法,并为root用户设置一个强密码。