- 工信部备案号 滇ICP备05000110号-1
- 滇公网安备53011102001527号
- 增值电信业务经营许可证 B1.B2-20181647、滇B1.B2-20190004
- 云南互联网协会理事单位
- 安全联盟认证网站身份V标记
- 域名注册服务机构许可:滇D3-20230001
- 代理域名注册服务机构:新网数码
- CN域名投诉举报处理平台:电话:010-58813000、邮箱:service@cnnic.cn
欢迎来到蓝队云小课堂!
在Linux服务器本机使用mysql -u root -p命令连接MySQL时,经常会遇到如下报错:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
或者路径显示为/var/lib/mysql/mysql.sock,这类问题的本质都是:MySQL客户端默认通过Unix Socket连接本地服务,但找不到服务端生成的socket文件。
socket文件由mysqld进程启动时创建,服务未运行则文件不存在:
systemctl status mysqld
若未启动,先启动服务:
systemctl start mysqld
若启动失败,查看错误日志定位原因:
cat /var/log/mysqld.log
MySQL服务端socket路径在配置文件中定义,执行:
grep socket /etc/my.cnf
以及/etc/my.cnf.d/目录下的配置文件,正常会看到类似:
[mysqld]
socket=/var/lib/mysql/mysql.sock
确认该文件是否真实存在:
ls -l /var/lib/mysql/mysql.sock
本机执行mysql命令不加-h时,客户端按以下顺序找socket:
命令行--socket参数
配置文件[client]段的socket
编译默认路径(多为/tmp/mysql.sock)
当客户端默认找/tmp/mysql.sock,而服务端实际在/var/lib/mysql/mysql.sock时,就会报错。
临时解决:连接时手动指定
mysql -u root -p --socket=/var/lib/mysql/mysql.sock
永久解决:统一配置文件
编辑/etc/my.cnf,同时配置服务端和客户端:
[mysqld]
socket=/var/lib/mysql/mysql.sock
[client]
socket=/var/lib/mysql/mysql.sock
保存后重启MySQL:
systemctl restart mysqld
再次执行mysql -u root -p即可正常连接。
如果不想处理socket路径,可强制走TCP连本机:
mysql -u root -p -h 127.0.0.1
需确保配置中未开启skip-networking,且bind-address允许本机回环地址。
权限问题:mysql用户对socket所在目录无读写权限,执行chown -R mysql:mysql /var/lib/mysql修正
残留假socket:之前异常退出在/tmp留下无效sock文件,删掉后重连
多实例/源码安装:不同安装方式socket默认路径不同,以实际配置文件为准
确认mysqld服务已启动
查/etc/my.cnf中[mysqld]socket真实路径
检查该socket文件是否存在
连接加--socket验证
把[client]socket配成同一路径并重启
售前咨询
售后咨询
备案咨询
二维码

TOP