【MySql】ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)解决方案

一、错误信息

连接MySQL时候报错如下

[root@lzh-2024 ~]# mysql -uroot -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
[root@lzh-2024 ~]# 

在这里插入图片描述

二、出现Access denied原因排查

1、确认密码是否正确

确保输入的密码与 root 用户的密码一致。
如果忘记密码,可以尝试重置 root 密码(见下文)。

2. 检查 root 用户的权限(重要)

登录 MySQL 服务器(例如从本地登录),检查 root 用户的权限:

-- 如果在终端连接mysql时需要
mysql -u root -p  
-- 查看用户权限
SELECT user, host FROM mysql.user WHERE user = 'root';

在这里插入图片描述
如果 host 列中没有 localhost 或 %,说明 root 用户没有从该 IP 地址登录的权限。

如果需要允许从localhost 登录(如果允许所有机器那么用%),可以执行如下语句添加权限

CREATE USER 'root'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

3、重置root 密码

如果忘记 root 密码,可以通过以下步骤重置

(1)停止 MySQL 服务
sudo systemctl stop mysql
(2)以安全模式启动 MySQL
sudo mysqld_safe --skip-grant-tables &
(3)登录 MySQL(无需密码)
mysql -u root
(4)重置 root 密码

USE mysql;
UPDATE user SET authentication_string=PASSWORD('new_password') WHERE User='root';
FLUSH PRIVILEGES;
EXIT;

(5)重启 MySQL 服务
sudo systemctl restart mysql

root 用户已经允许从任意主机(%)和本地(localhost)登录,但仍然无法远程连接,请参考4、5、6

4、MySQL 配置问题

  • 检查 bind-address 配置
    1、MySQL 默认只监听本地地址(127.0.0.1),需要修改配置以允许远程连接。
    2、打开 MySQL 配置文件(通常是 /etc/my.cnf 或 /etc/mysql/my.cnf)。
    找到 bind-address 配置项,将其改为 0.0.0.0(监听所有网络接口)或服务器的公网 IP 地址
[mysqld]
bind-address = 0.0.0.0
    3、保存文件并重启 MySQL 服务

sudo systemctl restart mysql

  • 检查 skip-networking 配置
    确保 MySQL 配置文件中没有启用 skip-networking。如果存在该配置项,将其注释或删除
    # skip-networking

5、防火墙配置

  • 检查服务器防火墙
    确保服务器的防火墙允许 MySQL 端口(默认是 3306)的入站连接。例如
    如果使用 ufw(Ubuntu):
    sudo ufw allow 3306/tcp
    如果使用 firewalld(CentOS):
    sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
    sudo firewall-cmd --reload
  • 检查云服务器安全组
    如果使用云服务器(如 AWS、阿里云等),确保安全组规则允许从远程 IP 地址访问 MySQL 端口(3306)

6、用户权限问题

1、确认 root 用户的权限,检查 root 用户的权限是否正确
SELECT user, host FROM mysql.user WHERE user = 'root';
确保 host 列包含 %(允许任意主机)或远程主机的 IP 地址
在这里插入图片描述

2、重新授权 root 用户,如果权限不正确,可以重新授权 root 用户
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password' WITH GRANT OPTION;
FLUSH PRIVILEGES;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一起来学吧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值