通用二進制部署mysql5.7.17時的報錯整理
報錯1:
# /etc/init.d/mysql start
Starting MySQL.The server quit without updating PID file (/usr/local/mysql/data//iZ8vb0ywcounjc3oh3rv2jZ.pid). [FAILED]
解決:顯示pid文件的一般是屬主屬組權限的問題,賦予數據目錄權限
# chown -R mysql.mysql /usr/local/mysql
報錯2:
# /etc/init.d/mysql start
Starting MySQL.2020-02-15T02:22:28.043091Z mysqld_safe error:
log-error set to '/usr/local/mysql/data//localhost.localdomain.err', however file don't exists. Create writable for user 'mysql'.
The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid).
【還出現過路徑是這樣的錯誤/usr/local/mysql[失敗]localhost.localdomain.pid;也是屬主屬組的問題。給權限就ok了】
出現日誌和權限的問題,就是沒有該日誌,pid文件目錄的屬組屬主的問題
創建該日誌,賦予該目錄屬主屬組即可解決
查看更詳細的錯誤信息用:
systemctl status mysql或者journalctl -xe命令
分析:
報錯日誌中提到用戶mysql。Pid文件和日誌,
查看自己的服務,mysql用戶已經存在了。存放日誌的路徑屬組屬主也是mysql,但是查看路徑/usr/local/mysql/data下還有部分文件的屬組屬主不是mysql,執行 chown -R mysql.mysql /usr/local/mysql/data即可解決問題。
注意:
/usr/local/mysql/data是mysql的數據目錄。
解釋:
#查看data目錄屬組屬主已經是mysql
查看data目錄下的所有文件的屬主屬組,發現有部分文件的屬組屬主是root
給data目錄下所有文件的屬主屬組改爲mysql即可解決問題
排錯的其他思路:
防火牆和selinux
在網上看到一篇文章說是與selinux有關,selinux的開啓會導致部分服務安裝失敗。可以一試。
虛擬機的selinux默認是開啓的
# setenforce 0【臨時關閉selinux】
# /usr/sbin/sestatus -v
Current mode: permissive【此處表示臨時關閉selinux】【如果是enforcing,表示開啓】
有關mysql.sock和引擎的問題以下這位博主做了總結
https://blog.csdn.net/qq_42609381/article/details/88578537
個人認爲存在疑問的思路【親自測試,沒有奏效的思路】
網上說關於pid報錯,在配置文件裏給pid添加路徑
# vi /etc/init.d/mysql
(64行) mysqld_pid_file_path=/usr/local/mysql/data/
註釋掉pid參數
# vi /etc/init.d/mysql
#mysqld_pid_file_path
解釋:
因爲pid文件是mysql運行時纔會自動創建的文件。當mysql停止時pid文件也會自動消失。
個人覺得關於路徑和註釋pid參數的說法存在疑問
這是需要執行重啓命令systemctl restart mysql倆次否則用 systemctl status mysql
查看mysql狀態的時候還是會顯示錯誤,(這時的錯誤是緩存的,多重啓3次就好了)
中間還出現過ip丟失的問題,不過重啓網卡systemctl restart network後就好了
啓動mysql後會自動創建3個文件
-rw-rw---- 1 root root 6 2月 17 09:05 mysqld_safe.pid
-rw-r----- 1 mysql mysql 6 2月 17 09:05 localhost.localdomain.pid
-rw-r----- 1 mysql mysql 12582912 2月 17 09:05 ibtmp1