linux登陆mysql时显示 Access denied for user 'root'@'localhost'
时间: 2024-05-21 18:09:17 浏览: 106
这个错误提示意味着 MySQL 数据库服务器拒绝了使用 root 用户以本地主机连接的请求。这通常是因为 root 用户没有使用正确的密码进行身份验证,或者 root 用户的访问权限被限制。以下是可能的解决方法:
1. 检查用户名和密码是否正确:请确保在输入命令时使用了正确的用户名和密码。如果您忘记了密码,可以通过以下命令重置 root 密码:
```
sudo service mysql stop
sudo mysqld_safe --skip-grant-tables &
mysql -u root
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='root';
FLUSH PRIVILEGES;
exit;
sudo service mysql start
```
2. 检查主机访问权限:请检查 MySQL 数据库服务器是否允许 root 用户从本地主机连接。可以通过以下命令检查:
```
SELECT user,host FROM mysql.user;
```
如果您看到 root 用户的 host 列不是 'localhost',则表示该用户不允许从本地主机连接。可以通过以下命令修改该用户的主机访问权限:
```
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
```
3. 检查防火墙设置:如果您使用了防火墙,请确保已打开 MySQL 数据库服务器的端口。默认情况下,MySQL 数据库服务器使用 3306 端口。可以通过以下命令检查端口是否已打开:
```
sudo ufw status
```
如果该端口未打开,请使用以下命令打开:
```
sudo ufw allow 3306/tcp
```
阅读全文