1. 问题描述
错误代码: 1045 - Access denied for user 'root'@'OpenWrt' (using password: YES)
原因分析:
数据库用户
root默认只允许localhost(本地)登录。客户端(如 OpenWrt 路由器或其他远程主机)尝试通过 IP 连接时被拒绝。
2. 解决步骤
第一步:登录数据库
通过 SSH 终端登录到数据库服务器,输入以下命令进入 MySQL 命令行界面:
mysql -u root -p
(输入当前 root 密码并回车,进入 mysql> 提示符)
第二步:执行授权命令
在 mysql> 提示符下,执行以下 SQL 语句,允许 root 用户从任何 IP(%)登录,并指定密码:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION;
注意: 请将
'你的密码'替换为你实际想要设置的密码(例如之前的277e8e1d01e46169)。
第三步:刷新权限
为了使刚才的设置立即生效,必须执行刷新命令:
FLUSH PRIVILEGES;
第四步:退出数据库
输入 exit 并回车,返回到 Linux 终端界面。
exit;
3. 补充说明(版本差异)
如果你的数据库是 MySQL 8.0 或更高版本,上述第二条命令可能会报错。请使用以下步骤代替:
创建用户(如果用户不存在):
CREATE USER 'root'@'%' IDENTIFIED BY '你的密码';
授权:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
刷新权限:
FLUSH PRIVILEGES;
4. 故障排查
如果执行完上述步骤仍无法连接,请检查以下两点:
服务器防火墙:
确保服务器的防火墙(如 firewalld 或 iptables)已放行 3306 端口。数据库绑定地址:
检查数据库配置文件(通常在/etc/my.cnf),确保bind-address不是127.0.0.1,可以将其注释掉或改为0.0.0.0,然后重启数据库服务。
文档记录时间:当前日期
*适用环境:CentOS 7 / MySQL / MariaDB*