MySQL无法通过套接字/var/run/mysqld/mysqld.sock连接本地服务求助
MySQL socket连接报错排查解决步骤
- 第一步:确认mysqld运行状态与socket文件匹配性
执行ps aux | grep mysqld查看是否有运行中的mysqld进程- 无运行进程:服务启动失败,直接查看默认错误日志
/var/log/mysql/error.log,定位启动失败原因,常见原因包括配置文件语法错误、3306端口被占用、数据目录损坏、运行用户权限不足 - 有运行进程:执行
mysqladmin variables | grep socket查看服务实际监听的socket路径,和报错提示的/var/run/mysqld/mysqld.sock对比。路径不一致的话,可在mysql配置文件/etc/my.cnf(部分发行版路径为/etc/mysql/my.cnf)的client段添加对应socket配置,或连接时指定socket路径:mysql -S [实际socket文件路径]
- 无运行进程:服务启动失败,直接查看默认错误日志
- 第二步:校验socket目录与文件权限
执行ls -ld /var/run/mysqld/查看目录是否存在、权限是否正常- 目录不存在:手动创建并赋权,依次执行:
完成后重启mysql服务mkdir -p /var/run/mysqld chown mysql:mysql /var/run/mysqld chmod 755 /var/run/mysqld - 目录存在但无mysqld.sock文件:先尝试走TCP连接验证服务可用性:
mysql -h 127.0.0.1 -u root -p,连接成功则说明仅socket配置异常,在配置文件mysqld段添加正确的socket参数后重启服务即可
- 目录不存在:手动创建并赋权,依次执行:
- 第三步:修复配置文件异常
先备份当前配置:cp /etc/mysql/my.cnf /etc/mysql/my.cnf.bak,检查配置文件中user、datadir、socket、log_error等核心参数是否存在语法错误、值配置错误的问题
注意:如果需要执行清理mysql残留配置的操作,务必先备份/var/lib/mysql目录下的全部数据,避免数据丢失 - 第四步:校验数据目录权限
执行chown -R mysql:mysql /var/lib/mysql && chmod 700 /var/lib/mysql修正数据目录权限,权限异常会导致服务无法正常启动生成socket文件
内容的提问来源于stack exchange,提问作者Yngwie Duane Borja
相关产品推荐
相关产品推荐

