输入密码报ERROR 2002 (HY000)无法通过socket连接本地MySQL怎么办
Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/opt/lampp/var/mysql/mysql.sock' (111)
报错产生原因
错误码111代表连接被拒绝,核心是MySQL客户端尝试通过指定Unix套接字文件连接本地服务时,无法建立有效连接,常见触发原因如下:
- LAMPP集成环境中的MySQL服务未正常启动,未生成对应的套接字文件
- MySQL服务端配置的套接字文件路径,与客户端默认读取的路径不匹配
- 运行MySQL客户端的用户,没有权限读取
/opt/lampp/var/mysql/mysql.sock文件 - 3306端口被其他进程占用,导致MySQL服务启动失败,无法生成套接字文件
- SELinux、AppArmor等系统安全策略,拦截了MySQL生成或读取套接字文件的操作
排查与解决方法
1. 检查MySQL服务运行状态
执行命令查看LAMPP组件运行状态:sudo /opt/lampp/lampp status
若返回MySQL not running,直接启动对应服务:sudo /opt/lampp/lampp startmysql
启动完成后重新测试数据库连接,确认问题是否解决。若服务启动失败,继续下一步排查。
2. 核对套接字文件路径与存在性
执行命令检查目标套接字文件是否存在:ls -l /opt/lampp/var/mysql/mysql.sock
- 若文件不存在,打开LAMPP MySQL配置文件
/opt/lampp/etc/my.cnf,分别核对[mysqld]段和[client]段的socket配置项,确保两段配置的路径完全一致。修改配置后重启MySQL服务即可。 - 若配置路径一致但文件仍不存在,先清除残留MySQL进程后重启服务:
查找进程PID:ps aux | grep mysql
杀死残留进程:sudo kill -9 <对应PID>
重启MySQL服务:sudo /opt/lampp/lampp restartmysql
3. 检查套接字文件权限
若套接字文件存在,检查文件所属用户与权限:ls -l /opt/lampp/var/mysql/mysql.sock
正常文件属主应为mysql用户,且具备可读权限。权限不符时执行以下命令修改:sudo chown mysql:mysql /opt/lampp/var/mysql/mysql.socksudo chmod 777 /opt/lampp/var/mysql/mysql.sock
修改完成后重新测试连接。
4. 检查端口占用
若MySQL服务始终启动失败,检查3306端口是否被其他进程占用:sudo netstat -tulpn | grep 3306
若存在占用进程,关闭对应进程或者修改MySQL配置的监听端口后再启动服务。
5. 临时验证TCP连接
若上述操作均未解决问题,可临时使用TCP协议连接测试:mysql -u root -p --protocol=tcp
如果可以正常连接,确认是套接字路径配置问题,重新核对my.cnf配置即可。
内容的提问来源于stack exchange,提问作者DFA

