1. 程式人生 > >MySQL 5.6容器使用自定義配置文件的權限問題

MySQL 5.6容器使用自定義配置文件的權限問題

folder 圖片 OS roo title mage issues ges back


提出問題:

???????? 在使用Rancher2.0.2部署一個mysql deployment時,我們會發現,如果只設置/var/lib/mysql數據目錄時,mysql容器(pod)能夠正常啟動,一旦數據目錄和配置目錄同時掛載時,mysql容器(pod)就無法啟動。


解決思路:

???????? 我們運行一個MySQL 5.6的容器,觀察正常運行時,容器內數據目錄、配置目錄、日誌目錄的所有者及權限,並查看容器內組文件,對比宿主機中的組文件,應該能找到原因所在,進而可以通過在宿主機中設置正確的目錄權限和所有者來解決該問題。


Docker宿主機中:

組文件:??? /etc/group

root:x:0:

adm:x:4:syslog,catty

docker:x:999:catty

catty:x:1000


MySQL容器中:

功能???????????????? 目錄?????????????????????????????????????? chown -R??????? chmod

日誌目錄:? /var/log/mysql????????????????????? mysql:adm??????? 640

數據目錄:? /var/lib/mysql?????????????????????? mysql:mysql????? 640

配置文件:? /etc/mysql/mysql.conf.d??? root:root???????????? 644

組文件:????? /etc/group

root:x:0:

adm:x:4:

mysql:x:999:


圖1、MySQL5.6容器中目錄權限及所有者

技術分享圖片

解決辦法:

???????? 如果運行mysql容器時,需要使用自定義配置文件,可在主機上創建目錄,設置所有者為root用戶和root組,命令: chown -R root:root /etc/mysql/ ,然後運行容器時,使用-v /etc/mysql:/etc/mysql 將該目錄掛載到容器中,這樣才能正常啟動MySQL容器。


參考鏈接

Set permissions on log folder #349

https://github.com/docker-library/mysql/pull/349

5.7.10-fails to mount volume `/var/log/mysql` #146

https://github.com/docker-library/mysql/issues/146#ref-commit-68a2cd4

MySQL 5.6容器使用自定義配置文件的權限問題