《MySQL 常见错误与解决方案》
本文整理 MySQL 使用过程中的高频报错与排查思路,涵盖数据目录权限、远程连接、主机权限三方面的典型问题。
1 数据库目录权限
报错:
ERROR 1018 (HY000): Can't read dir of '.' (errno: 13)(2002, "Can't connect to local MySQL server through socket '/var/lib/mysql/my_database' (13)")
原因:MySQL 数据目录的所有者或权限不正确,多半是 /var/lib/mysql 被改动了权限。
解决:
# 你的 mysql 用户可能叫别的名字,用 ps 或配置确认
chown -R mysql:mysql /var/lib/mysql/
chmod -R 755 /var/lib/mysql/
2 ERROR 2003 (HY000):无法连接远端 MySQL
报错
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.1.1' (111)
原因:MySQL Server 只监听了 127.0.0.1,未开放对外端口。
解决办法:编辑 MySQL 配置文件,注释掉 bind-address:
# 查看两处常见位置
vi /etc/mysql/my.cnf
vi /etc/mysql/mysql.conf.d/mysqld.cnf
#
# 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
#
修改后重启 MySQL 服务:
systemctl restart mysql
参考:Fix ERROR 2003 Can’t connect to MySQL server
3 Host ‘xxx.xx.xx.xxx’ is not allowed to connect
报错
Host 'IP' is not allowed to connect to this MySQL server
原因:mysql.user 表中没有该来源主机的授权记录,需要创建允许任意来源的用户。
解决办法:
CREATE USER 'root'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;
root@% 允许任何来源主机连接。安全起见,生产环境建议限定具体来源 IP,并设置强密码。
参考:Host not allowed to connect
4 小结
| 报错 | 通常原因 | 处理动作 |
|---|---|---|
| ERROR 1018 / socket (13) | 数据目录权限错误 | 重置目录 owner 与权限 |
| ERROR 2003 … (111) | 只监听本机 | 放开 bind-address |
| Host not allowed | 缺少来源主机授权 | 创建 'user'@'%' 并授权 |
阅读 —
·
全站 —