《MySQL 常见错误与解决方案》

《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'@'%' 并授权
阅读 — · 全站 —
🎸 我的歌单 0 首