Docker安裝mysql教程以及解決mysqld: Can‘t read dir of ‘/etc/mysql/conf.d/‘問題
如果還沒在虛擬機(jī)/服務(wù)器中安裝docker,可以查閱相關(guān)文檔 先安裝docker。
一、下載MySQL的docker鏡像
拉取鏡像的命令為 docker pull 鏡像名:tag 或 docker pull 鏡像名,前者拉取指定版本的鏡像、后者拉取最新版本的鏡像。
此處拉取mysql 5.7
docker pull mysql:5.7
- 如果提示權(quán)限不足的話,需要使用管理員的方式執(zhí)行:
sudo docker pull mysql:5.7。 - 可通過
docker images查看拉取成功的鏡像。
二、啟動MySQL容器
2.1 命令
docker run -p 3306:3306 --name mysql \ -v /mydata/mysql/log:/var/log/mysql \ -v /mydata/mysql/data:/var/lib/mysql \ -v /mydata/mysql/conf:/etc/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ -d mysql:5.7
參數(shù)說明:
- -p 3306:3306:將容器的3306端口映射到主機(jī)的3306端口。如果本地已安裝mysql或其他應(yīng)該占用了3306端口,可使用其他端口 -p port1:3306,保證port1端口未被占用即可
- -v /mydata/mysql/conf:/etc/mysql:將配置文件夾掛在到主機(jī)
- -v /mydata/mysql/log:/var/log/mysql:將日志文件夾掛載到主機(jī)
- -v /mydata/mysql/data:/var/lib/mysql/:將數(shù)據(jù)文件夾掛載到主機(jī)
- -e MYSQL_ROOT_PASSWORD=root:初始化root用戶的密碼
或者直接在/mydata/mysql/conf/目錄下新建my.cnf文件,執(zhí)行如下命令:
docker run -p 3306:3306 --name mysql \ -v /mydata/mysql/log:/var/log/mysql \ -v /mydata/mysql/data:/var/lib/mysql \ -v /mydata/mysql/conf/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=123456 \ -d mysql:5.7
2.2 報(bào)錯mysqld: Can’t read dir of ‘/etc/mysql/conf.d/’ (Errcode: 2 - No such file or directory)
補(bǔ)充:在啟動mysq容器、即執(zhí)行docker run -p xxx時(shí),docker ps看不到創(chuàng)建的mysql容器,使用docker logs mysql發(fā)現(xiàn)報(bào)錯
mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 2 - No such file or directory)
原因:這意味著 MySQL 在啟動時(shí)無法找到 /etc/mysql/conf.d/ 目錄,mysql容器的/etc/mysql目錄掛載到宿主機(jī)的 /mydata/mysql/conf目錄,這通常是因?yàn)檫@個目錄在你掛載的配置卷 /mydata/mysql/conf 中不存在或沒有正確創(chuàng)建,導(dǎo)致容器創(chuàng)建失敗。
解決方法:
檢查本地配置目錄:檢查宿主機(jī)的 /mydata/mysql/conf 目錄中是否存在 conf.d 和 mysql.conf.d 子目錄,如果不存在,創(chuàng)建這個子目錄。
# 創(chuàng)建子目錄 mkdir -p /mydata/mysql/conf/conf.d mkdir -p /mydata/mysql/conf/mysql.conf.d
此時(shí),可以通過命令進(jìn)入conf 檢查是否已經(jīng)存在子目錄
cd /mydata/mysql/conf ls
刪除或重命名舊容器:
# 刪除它,以釋放容器名稱(推薦) docker rm mysql # 重命名舊容器 docker rename mysql old_mysql
重啟容器:
docker run -p 3306:3306 --name mysql \ -v /mydata/mysql/log:/var/log/mysql \ -v /mydata/mysql/data:/var/lib/mysql \ -v /mydata/mysql/conf:/etc/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ -d mysql:5.7
此時(shí),通過命令可以查看是否可以已經(jīng)啟動MySQL容器
docker ps
也可通過Navicat等工具遠(yuǎn)程連接mysql。
至此,mysql已安裝成功,接下來我們來修改配置。
三、進(jìn)入mysql容器
docker exec -it mysql /bin/bash
使用MySQL命令打開客戶端:
mysql -uroot -p mysql -uroot -p密碼 --default-character-set=utf8

四、修改mysql默認(rèn)配置
4.1 查看mysql掛載的文件夾
由于在創(chuàng)建實(shí)例的時(shí)候,已經(jīng)將部分文件夾掛載到Linux宿主機(jī)目錄下,所以當(dāng)我們修改一些mysql的配置文件時(shí),不需要再進(jìn)入docker環(huán)境下,直接在Linux環(huán)境下操作即可。
掛載的目錄為:
cd /mydata/mysql
4.2 mysql配置
Linux 操作系統(tǒng)中 MySQL 的配置文件是 my.cnf,一般會放在 /etc/my.cnf 或 /etc/mysql/my.cnf 目錄下。
內(nèi)容一般為:
[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] init_connect='SET collation_connection = utf8_unicode_ci' init_connect='SET NAMES utf8' character-set-server=utf8 collation-server=utf8_unicode_ci skip-character-set-client-handshake skip-name-resolve
1)宿主機(jī)進(jìn)入mysql的conf目錄,新建my.conf文件,寫入內(nèi)容:
cd /mydata/mysql/conf ls vi my.cnf # 在my.cnf中插入上述my.cnf內(nèi)容,保存退出 #重啟mysql docker ps docker restart mysql
2)進(jìn)入mysql容器內(nèi)部,查看文件是否配置成功
docker exec -it mysql /bin/bash cd /etc/mysql ls cat my.cnf

五、補(bǔ)充
1)設(shè)置mysql每次開機(jī)隨docker自啟動
可以使用docker run命令時(shí)加上--restart選項(xiàng),或者在容器創(chuàng)建后更改其重啟策略
docker run -d --restart=always --name yourContainerName yourImage
這里的--restart=always選項(xiàng)確保無論退出代碼是什么,只要Docker守護(hù)程序啟動,容器都會自動重啟。
如果容器已經(jīng)運(yùn)行,您可以使用docker update命令更改重啟策略
docker update mysql-container --restart=always
2)如果想 設(shè)置docker服務(wù)開機(jī)自啟動,可使用如下命令:
systemctl enable docker
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決Docker警告:Your kernel does not support&
這篇文章主要介紹了解決Docker警告:Your kernel does not support swap limit capabilities or the cgroup is not mounted問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04
基于docker搭建redis-sentinel集群的方法示例
這篇文章主要介紹了基于docker搭建redis-sentinel集群的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-06-06
docker compose部署主從復(fù)制的實(shí)現(xiàn)
本文記錄了通過 docker compose 搭建一主雙從的 Redis 服務(wù)。文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
docker搭建samba服務(wù)smb網(wǎng)絡(luò)磁盤共享方式
這篇文章主要介紹了docker搭建samba服務(wù)smb網(wǎng)絡(luò)磁盤共享方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2026-03-03
WIN10系統(tǒng)和Docker內(nèi)部容器IP互通方式
這篇文章主要介紹了WIN10系統(tǒng)和Docker內(nèi)部容器IP互通方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11
編寫Dockerfile和構(gòu)建自定義鏡像的步驟與技巧
Docker已經(jīng)成為現(xiàn)代應(yīng)用程序開發(fā)和部署的重要工具之一,在Docker中,Dockerfile是定義和構(gòu)建自定義鏡像的鍵文件,本文將深入解讀Dockerfile的編寫和自定義鏡像的構(gòu)建過程,并分享一些實(shí)用的技巧和最佳實(shí)踐,需要的朋友可以參考下2023-07-07
使用Docker部署Neko自托管虛擬瀏覽器(Firefox)的流程
本文介紹了基于WebRTC的自托管虛擬瀏覽器環(huán)境Neko的部署方法,包括使用Docker和Docker Compose部署、基本配置、使用方法及注意事項(xiàng)等內(nèi)容,適合團(tuán)隊(duì)協(xié)作、遠(yuǎn)程演示等場景,需要的朋友可以參考下2026-04-04

