首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 啟動失敗 errno 13 權限問題深度排查實戰

     編輯:MySQL 綜合教學

MySQL 啟動失敗 errno 13 權限問題深度排查實戰

克隆環境後首次啟動 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'

核心排查步驟

1. 查看錯誤日誌(關鍵入口)

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

2. 確認 errno 13 含義

perror 13
OS error code 13: Permission denied

3. 定位權限異常目錄

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

4. 修正權限(核心修復)

chown -R mysql:mysql /data/mysql/mysql_3306/data/
chown -R mysql:mysql /data/mysql/mysql_3306/logs/

5. 重新啟動驗證

mysqld_safe &
mysql -u root -p
# 成功進入 MySQL monitor,進程正常運行

避坑總結:標準化故障排查鏈路

  1. 看日誌:error.log 是第一現場,ERROR/WARNING 直接指向根因
  2. 譯錯誤碼:perror 快速翻譯系統錯誤碼
  3. 核對權限:datadir、log_bin、relay_log、tmpdir 所有目錄/文件屬主必須為 mysql:mysql
  4. 檢查 SELinux/AppArmor:若權限無誤仍報 13,檢查安全模塊上下文 ls -Z
  5. 驗證 my.cnf 路徑:datadir、log_error、pid_file、socket 路徑是否與實際一致

環境信息

  • OS:RHEL 6.4 x86_64
  • MySQL:5.5.39 (源碼編譯,/usr/local/mysql -> /opt/mysql/mysql-5.5.39-linux2.6-i686)
  • 數據目錄:/data/mysql/mysql_3306/data
  • 日誌目錄:/data/mysql/mysql_3306/logs
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved