天天看點

CentOS安裝mysql The server quit without updating PID file問題

CentOS安裝mysql The server quit without updating PID file問題

    • 背景描述
    • 部署步驟
    • 問題來了
    • 網上解決辦法彙總
    • 最終解決辦法

背景描述

最近接到個任務在CentOS部署一套5.7的mysql服務,之前沒有在linux上安裝過myslq的經驗,但是往上看了一些文章感覺還是比較容易,同僚也說隻要幾分鐘就能搞定,于是欣然開始了我地采坑之路。。。

部署步驟

1、下載下傳tar包,使用sftp工具上傳至/tmp下

2、建立mysql使用者、mysql使用者組

#建立mysql使用者組:groupadd mysql

#建立mysql使用者:useradd mysql -g mysql

3、将mysql安裝到/home/mysql/下

#解壓:

cd /opt/mysql/

tar -xvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

#重命名

cd /opt/mysql

mv mysql-5.7.24-linux-glibc2.12-x86_64 mysql

4、建立data目錄、日志目錄

cd /opt/mysql

mkdir /opt/mysql/data

mkdir /opt/mysql/log

5、将/opt/mysql的所有者及所屬組改為mysql

chown -R mysql:mysql /opt/mysql

6、初始化

su - mysql

cd /opt/mysql

./bin/mysqld --initialize --user=mysql --basedir=/opt/mysql --datadir=/opt/mysql/data

⚠️初始化後會生成一串臨時密碼,作為首次登陸密碼

如:2017-11-29T01:55:23.192210Z 1 [Note] A temporary password is generated for [email protected]: Q5Sck93kdK/*

7、配置my.cnf

接下來進入/opt/mysql/support-files/目錄下

檢視是否存在my-default.cnf檔案,如果存在直接copy到/etc/my.cnf

cd /opt/mysql/support-files/

cp -a ./support-files/my-default.cnf /etc/my.cnf

如果不存在my-default.cnf檔案,則在/etc/目錄下建立my.cnf,并寫入以下内容,例如:

vi /etc/my.cnf

[mysqld]

character_set_server=utf8

init_connect=‘SET NAMES utf8’

basedir=/home/mysql/mysql

datadir=/home/mysql/mysql/data

socket=/home/mysql/mysql/mysql.sock

log-error=/home/mysql/mysql/log/mysqld.log

pid-file=/home/mysql/mysql/mysql.pid

8、把mysqld放到本地系統服務中

接下來進入/opt/mysql/support-files/目錄下

cd /opt/mysql/support-files/

cp -a ./support-files/mysql.server /etc/init.d/mysqld

#chmod 755 /etc/init.d/mysqld

9、啟動mysql

/etc/init.d/mysqld start

如報錯:ERROR! The server quit without updating PID file (/software/mysql/mysqld.pid).

因為新版本的mysql安全啟動安裝包隻認/usr/local/mysql這個路徑。

解決辦法:

方法1、建立軟連接配接

例:

#cd /usr/local/mysql

#ln -s /opt/mysql/bin/mysqld mysqld

如報錯:Can’t connect to local MySQL server through socket ‘/opt/mysql/mysql.sock’

軟連結:

ln -s /tmp/mysql.sock /opt/mysql/mysql.sock

10、登陸mysql

mysql -u root -p

會提示輸入登陸密碼,輸入初始化時候的臨時密碼就可以了

11、加入環境變量,編輯 /etc/profile,這樣可以在任何地方用mysql指令了

vi /etc/profile

在末尾添加如下行

export PATH=$PATH:/opt/mysql/bin

儲存後執行 source /etc/profile 使生效

12、使用mysql

service mysqld start/stop/restart

13、修改初始密碼

CentOS安裝mysql The server quit without updating PID file問題

14、建立遠端連接配接賬号

CentOS安裝mysql The server quit without updating PID file問題

以上是一個做運維的朋友給我的他們給客戶安裝的步驟

問題來了

以上的步驟是根據我系統的實際路徑修改的,原文檔是安裝在home目錄下。以開始系統隻有一個root使用者,考慮到再去建立一個mysql使用者比較麻煩(xxx的項目,需要和上司以及網管說明。。。)是以就沒有去建立mysql使用者,即部署步驟中的第二步未執行,在初始化的時候–user參數也不填。在執行初始化之後發現The server quit without updating PID file…的問題,檢查mysql.pid檔案的确不存在,手動建立一個并賦予讀寫權限(root本身就能對這些檔案讀寫,其實沒必要)也無法解決,想着是不能對mysql.pid檔案讀寫導緻這個問題,于是手動寫一個pid到這個文檔中,啟動成功了,但是ps -ef|grep mysql沒發現mysl的程序,很明顯問題沒解決。

想到log檔案是否會有錯誤資訊呢,于是檢查log/mysqld.log檔案,發現日志隻輸出到随機生成root密碼處,後面就沒有了。考慮是否是配置檔案出錯,首先檢查核對basedir、datadir、error-log路徑都沒有問題,而且前期log也能正常輸出,data目錄下也有初始化出來的檔案,是以my.cnf配置應該沒問題。

網上解決辦法彙總

自己沒法解決隻能放大招了——度娘。相信搜過這個問題的人都看到了一下八個解決辦法

1.可能是data/mysql 檔案夾沒有寫的權限

解決方法 :給予權限,執行 “chown -R mysql:mysql /home/data/mysql” “chmod -R 755 /home/data/mysql” 然後重新啟動mysqld!

2.可能程序裡已經存在mysql程序

解決方法:用指令“ps -ef|grep mysqld”檢視是否有mysqld程序,如果有使用“kill -9 程序号”殺死,然後重新啟動mysqld!

3.可能是第二次在機器上安裝mysql,有殘餘資料影響了服務的啟動。

解決方法:去mysql的資料目錄/data看看,如果存在mysql-bin.index,就趕快把它删除掉吧,它就是罪魁禍首了。

4.mysql在啟動時沒有指定配置檔案時會使用/etc/my.cnf配置檔案,請打開這個檔案檢視在[mysqld]節下有沒有指定資料目錄(datadir)。

解決方法:請在[mysqld]下設定這一行:datadir = /home/data/mysql

5.skip-federated字段問題

解決方法:檢查一下/etc/my.cnf檔案中有沒有沒被注釋掉的skip-federated字段,如果有就立即注釋掉吧。

6.錯誤日志目錄不存在

解決方法:使用“chown” “chmod”指令賦予mysql所有者及權限

7.selinux惹的禍,如果是centos或redhat系統,預設會開啟selinux

解決方法:關閉它,打開/etc/selinux/config,把SELINUX=enforcing改為SELINUX=disabled後存盤退出重新開機機器試試。

8.删除mysql庫檔案/data/mysql/中的“ib_*”檔案,然後重新開機mysql

PS:這一條要小心使用,千萬記得檔案備份,否則萬劫不複

如果以上八條沒有幫助到你,那就接着往下看吧

我安裝的是5.7.24的,朋友說他近期安裝了5.7.23是正常的,是以有想會不會是小版本之間有差異導緻的,于是又改成5.7.23的版本,很遺憾沒有解決問題

最終解決辦法

軟體問題、配置問題都排除了黔驢技窮了。。。。想着按照步驟完完整整一步一步地再撸一遍,奇迹般沒問題了,問題就出在缺少的mysql使用者上,我的天。。。。至于為什麼一定需要一個mysql使用者後面扒拉下官方文檔繼續更新

繼續閱讀