
近期有同學反饋數據庫安裝的時候,已確定目錄權限已經設置了,但是還是無法安裝的情況。解決后,分享一下,幫助大家遇到相同問題時更快定位及解決。
1、案例還原
(1)創建目錄并創建授權
處理完成后,權限如下:
(2)安裝數據庫
bin/mysqld --defaults-file=/data/mysql/mysql3306/etc/my.cnf --initialize --user=mysql
此時報錯信息如下:
mysqld: Can't change dir to '/data/mysql/mysql3306/data/' (Errcode: 13 - Permission denied)
2022-10-29T19:02:30.058126+08:00 0 [Warning] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
2022-10-29T19:02:30.058209+08:00 0 [Warning] 'NO_AUTO_CREATE_USER' sql mode was not set.
2022-10-29T19:02:30.058277+08:00 0 [Note] Ignoring --secure-file-priv value as server is running with --initialize(-insecure) or --bootstrap.
2022-10-29T19:02:30.058317+08:00 0 [Note] bin/mysqld (mysqld 5.7.23-24-log) starting as process 9532 ...
2022-10-29T19:02:30.099203+08:00 0 [Note] --initialize specifed on an existing data directory.
2022-10-29T19:02:30.100460+08:00 0 [ERROR] failed to set datadir to /data/mysql/mysql3306/data/
2022-10-29T19:02:30.105066+08:00 0 [ERROR] Aborting
2022-10-29T19:02:30.105118+08:00 0 [Note] Binlog end
2022-10-29T19:02:30.105494+08:00 0 [Note] bin/mysqld: Shutdown complete
(3)原因排查
因之前在大數據機器上安裝數據庫出現過類似情況,因此想到查看上層目錄權限,結果果然是上層目錄權限問題。

(4)問題解決
修改目錄權限為755.
再進行初始化
bin/mysqld --defaults-file=/data/mysql/mysql3306/etc/my.cnf --initialize --user=mysql

順利完成初始化。
啟動數據庫,成功。
/usr/local/mysql5.7/bin/mysqld_safe --defaults-file=/data/mysql/mysql3306/etc/my.cnf

2、相似案例
使用xtrabackup工具還原數據庫時,如果配置文件中的數據目錄地址在本機中沒創建,那么在還原后啟動數據庫時也不成功,
(1)現場還原
xtrabackup工具備份一個數據庫實例,然后恢復至一個新實例(此過程略過,直接到還原目錄不存在的位置)。
先不創建此目錄(通常是寫錯位置,或創建的時候寫錯目錄名等).

開始還原。
innobackupex --defaults-file=/root/my.cnf --move-back ./
可以看到,還原的步驟能順利進行。


數據和日志目錄也自動創建了。
此時因為我們的配置文件在/root目錄下,啟動時,因配置文件中指定了tmp目錄,因此在/data/mysql/mysql3307下創建一個空的tmp目錄,保證目錄均存在。之后再創建一個日志文件。目錄權限調整為mysql屬主。

正常情況下此時啟動數據庫即可,可惜失敗了。

日志文件中也無任何內容。

這種情況,大家可能會想到是權限問題,比如有地方沒設置mysql屬主等,但其實不然。此情況就如同案例1中那樣,是因為目錄的操作權限不足導致。修改一下即可,例如:

只需要將/data/mysql目錄操作權限修改為755(建議子目錄也修改為755,但是不修改也可以正常啟動)。

子目錄未調整。

啟動數據庫。

查看進程已啟動。

日志也正常。

3、小結
數據庫對目錄及文件的操作權限、屬主等的要求是比較嚴格的,其中一條不符合要求就無法創建或啟動數據庫,以上案例希望對大家有幫助。