Ubuntu 20.04LTS LAMP服务器MySQL连接拒绝问题求助
解决MySQL连接拒绝(2002错误)的步骤
1. 修正用户权限的主机匹配
你创建的用户是'user1'@'localhost',但PHP代码里连接用的是host=domain.com,两者主机范围不匹配,导致权限验证失败。执行以下SQL调整用户权限:
-- 若仅允许从domain.com访问 CREATE USER 'user1'@'domain.com' IDENTIFIED WITH mysql_native_password BY 'password'; GRANT ALL PRIVILEGES ON domain.* TO 'user1'@'domain.com'; -- 建议仅授权目标数据库,而非所有库 -- 若需允许任意主机访问(注意安全风险) CREATE USER 'user1'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; GRANT ALL PRIVILEGES ON domain.* TO 'user1'@'%'; -- 刷新权限使配置生效 FLUSH PRIVILEGES;
2. 检查MySQL绑定地址配置
MySQL默认可能仅绑定127.0.0.1(仅允许本地访问),需修改配置开放外部连接:
- 找到MySQL配置文件(通常为
/etc/mysql/my.cnf或/etc/mysql/mysql.conf.d/mysqld.cnf) - 找到
bind-address项,改为0.0.0.0(允许所有IP访问)或服务器的公网IP - 重启MySQL服务:
systemctl restart mysql(Ubuntu/Debian)或service mysqld restart(CentOS)
3. 验证防火墙端口开放
确保服务器防火墙开放MySQL默认端口3306:
- UFW防火墙:
ufw allow 3306/tcp,执行ufw reload生效 - iptables:
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT,保存规则后重启iptables
4. 测试连接有效性
先用MySQL命令行测试连接,排除PHP代码问题:
mysql -u user1 -p -h domain.com
若能成功登录,说明权限和网络配置正常,再检查PHP代码;若仍失败,回到前面步骤逐一排查。
内容的提问来源于stack exchange,提问作者jack.linton
相关产品推荐
相关产品推荐

