克隆環境後首次啟動 MySQL 5.5.39 遇到 STOPPING server from pid file、Can't connect to local MySQL server through socket 等現象。通過系統性日誌分析,最終定位為 數據目錄與 Binlog 目錄權限屬主不一致 導致的 errno 13 (Permission denied)。本文完整記錄排查鏈路,作為同類故障的標準化處理範本。
[root@bak local]# mysqld_safe & Starting mysqld daemon with databases from /data/mysql/mysql_3306/data STOPPING server from pid file /data/mysql/mysql_3306/data/bak.pid 141017 09:20:23 mysqld ended ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'
cat /data/mysql/mysql_3306/data/error.log
關鍵報錯:
/usr/libexec/mysqld: File '/data/mysql/mysql_3306/logs/mysql-bin.000004' not found (Errcode: 13)
[ERROR] Failed to open log (file '/data/mysql/mysql_3306/logs/mysql-bin.000004', errno 13)
[ERROR] Could not open log file
[ERROR] Can't init tc log
[ERROR] Aborting
perror 13 OS error code 13: Permission denied
ls -l /data/mysql/mysql_3306/data/ # 發現 mysql、performance_schema、test 目錄屬主為 root:root ls -l /data/mysql/mysql_3306/logs/ # 發現 mysql-bin.000003、mysql-bin.000004 屬主為 root:root
chown -R mysql:mysql /data/mysql/mysql_3306/data/ chown -R mysql:mysql /data/mysql/mysql_3306/logs/
mysqld_safe & mysql -u root -p # 成功進入 MySQL monitor,進程正常運行
error.log 是第一現場,ERROR/WARNING 直接指向根因perror 快速翻譯系統錯誤碼datadir、log_bin、relay_log、tmpdir 所有目錄/文件屬主必須為 mysql:mysqlls -Zdatadir、log_error、pid_file、socket 路徑是否與實際一致/usr/local/mysql -> /opt/mysql/mysql-5.5.39-linux2.6-i686)/data/mysql/mysql_3306/data/data/mysql/mysql_3306/logs