[mysql] 記測試環境mariadb啟動失敗


背景

需要配置VM的硬件信息,故重啟了VM,結果開機后mariadb啟動失敗:

# systemctl restart mariadb
Authorization not available. Check if polkit service is running or see debug message for more information.
Job for mariadb.service failed because the control process exited with error code. See "systemctl status mariadb.service" and "journalctl -xe" for details.

分析

按提示查看服務status

執行systemctl status mariadb.service查看:

● mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2021-12-08 09:38:23 CST; 2min 23s ago
  Process: 14882 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS)
  Process: 14846 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
 Main PID: 14881 (mysqld_safe)
   CGroup: /system.slice/mariadb.service
           ├─14881 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
           └─15070 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/log/mariadb/mariadb.pid --sock...

Dec 08 09:38:21 vm systemd[1]: Starting MariaDB database server...
Dec 08 09:38:21 vm mariadb-prepare-db-dir[14846]: Failed to get D-Bus connection: Permission denied
Dec 08 09:38:21 vm mariadb-prepare-db-dir[14846]: Failed to get D-Bus connection: Permission denied
Dec 08 09:38:21 vm mariadb-prepare-db-dir[14846]: Database MariaDB is probably initialized in /var/lib/mysql already, nothing is done.
Dec 08 09:38:21 vm mariadb-prepare-db-dir[14846]: If this is not the case, make sure the /var/lib/mysql is empty before running mariadb-prepare-db-dir.
Dec 08 09:38:21 vm mysqld_safe[14881]: 211208 09:38:21 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.
Dec 08 09:38:21 vm mysqld_safe[14881]: 211208 09:38:21 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
Dec 08 09:38:23 vm systemd[1]: Started MariaDB database server.

查看log文件

大致是因為某個權限問題,但上面看不出來,只能再查看log文件vi /var/log/mariadb/mariadb.log,發現關鍵信息:

...
211208  8:36:26 [ERROR] mysqld: Can't create/write to file '/var/run/mariadb/mariadb.pid' (Errcode: 13)
211208  8:36:26 [ERROR] Can't start server: can't create PID file: Permission denied
211208 08:36:26 mysqld_safe mysqld from pid file /var/run/mariadb/mariadb.pid ended
...

檢查權限

以上說明文件/var/run/mariadb/mariadb.pid無法被創建和寫入,經過一些檢查,發現其他用戶無權限對/var/run目錄進行:

# cd /var
# ll
...
drwx------. 12 root root  256 Dec  8 09:43 run
...

一般來說,我們一般不會使用root去啟動mysql相關的服務,在部署的時候會獨立創建一些mysql的用戶和用戶組,用mysql這個用戶專職啟動mysql服務;

解決方法

#chmod -R 755 /var/run
# cd /var
#ll
...
drwxr-xr-x. 12 root root  256 Dec  8 09:43 run
...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM