ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) Enter current password for root (enter for none):
时间: 2023-11-24 21:52:38 浏览: 104
ERROR 1045 (28000): Access denied for user ”root”@”localhost” (using password: YES)实用解决方案
这个错误提示表明你正在尝试使用root用户连接到MySQL数据库,但是密码不正确或者没有权限。解决这个问题的方法如下:
1. 确认你输入的密码是否正确,如果不确定可以尝试重置密码。
2. 确认你是否有使用root用户连接到MySQL数据库的权限,如果没有可以尝试使用其他有权限的用户连接。
3. 检查MySQL服务器是否已经启动,如果没有启动可以尝试启动MySQL服务器。
4. 检查MySQL服务器的配置文件是否正确,特别是关于root用户的配置是否正确。
以下是解决这个问题的具体步骤:
1. 重置root用户的密码
```shell
# 停止MySQL服务器
sudo systemctl stop mysql
# 以跳过授权表的方式启动MySQL服务器
sudo mysqld_safe --skip-grant-tables &
# 连接到MySQL服务器
mysql -u root
# 切换到mysql数据库
use mysql;
# 更新root用户的密码
update user set authentication_string=password('new_password') where user='root';
# 刷新权限表
flush privileges;
# 退出MySQL服务器
exit;
# 停止MySQL服务器
sudo systemctl stop mysql
# 以正常方式启动MySQL服务器
sudo systemctl start mysql
```
2. 使用其他有权限的用户连接到MySQL数据库
```shell
mysql -u other_user -p
```
3. 启动MySQL服务器
```shell
sudo systemctl start mysql
```
4. 检查MySQL服务器的配置文件
```shell
# 打开MySQL服务器的配置文件
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
# 检查以下配置是否正确
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
#log-error = /var/log/mysql/error.log
# Recommended in standard MySQL setup
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# 检查以下配置是否正确
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
```
阅读全文