解决 MySQL 报错 “Can't connect to local MySQL server through socket '/tmp/mysql.sock

785 阅读1分钟

在执行执行 MySQL 安全初始化命令时

sudo mysql_secure_installation

出现如下命令

Enter password for user root: Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (61)

原因因分析

  •  是 Connection refused,说明 MySQL 服务没有正常运行或没有监听 /tmp/mysql.sock

  • 可能原因包括:

    • MySQL 服务没有启动或启动失败。
    • /tmp/mysql.sock 文件不存在或权限异常。
    • sock 文件残留或损坏,导致新进程无法创建 socket。

决步骤

  1. 确认 MySQL 服务是否在运行

    ps aux | grep mysqld
    

    如果没有 mysqld 进程,说明服务没启动。

  2. 查找 sock 文件实际位置

    find / -name '*.sock' 2>/dev/null | grep mysql
    

    确认 sock 文件是否存在,以及路径是否为 /tmp/mysql.sock

  3. 查看 MySQL 错误日志,定位启动失败原因

    tail -n 40 /opt/homebrew/var/mysql/*.err
    
  4. 清理残留的 sock 和 lock 文件

    sudo rm -f /tmp/mysql.sock /private/tmp/mysql.sock /System/Volumes/Data/private/tmp/mysql.sock
    sudo rm -f /tmp/mysql.sock.lock /private/tmp/mysql.sock.lock /System/Volumes/Data/private/tmp/mysql.sock.lock
    
  5. 修复 /tmp 目录权限

    sudo chmod 1777 /tmp
    
  6. 重启 MySQL 服务

    brew services restart mysql
    
  7. 再次执行安全初始化

    sudo mysql_secure_installation
    

结果

  • 问题解决,可以正常运行 

    mysql_secure_installation
    

  • MySQL 服务正常启动,后续可通过命令行连接数据库。