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


提出問題:

         在使用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容器目錄權限及所有者

解決辦法:

         如果運行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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章