我裝的是mysql 8.0.28,裝其他版本,改名命令后面的版本即可
docker拉取鏡像
sudo docker pull mysql:8.0.28
啟動容器,?/mydata目錄是我提前在服務(wù)器上創(chuàng)建的文件夾
-p 指定在容器內(nèi)部的端口 以及對外暴露的端口,冒號前面的是宿主機(jī)的端口惑芭,后面的是容器的端口滑凉,如果是3307:3306則代表把宿主機(jī)的3307端口映射給容器的3306,對外訪問連接時則需要通過3307才能連接到容器的mysql
--name 設(shè)置服務(wù)器名稱
--restart 是否運(yùn)行跟隨docker一起啟動
--network 容器之間內(nèi)部通信網(wǎng)絡(luò)酝碳,默認(rèn)就是bridge,可以不寫此命令
-v 掛載命令 將容器中的配置掛載在外部來方便修改恨狈,其中有一些mysql的配置文件掛載疏哗,數(shù)據(jù)文件夾等
-d 指定版本
-e 修改配置
-e 指定root的密碼為Abc?123456, 可根據(jù)自己需求更改為其他
docker run -p 3306:3306 --name mysql --restart=always --network bridge -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql/conf.d??-e MYSQL_ROOT_PASSWORD=Abc?123456 -d mysql:8.0.28
查看容器是否啟動正常,?docker ps -a執(zhí)行后看到下圖所示拴事,則代表啟動成功沃斤,如果圖片中STATUS為Exited或者一直Restarting,則需要尋找原因刃宵,可使用docker logs?
docker ps -a
修改配置文件衡瓶,由于啟動容器加了掛載配置文件到宿主機(jī) -v?/mydata/mysql/conf:/etc/mysql/conf.d, 所以我們可以直接在宿主機(jī)/mydata/mysql/conf對mysql配置文件進(jìn)行處理牲证,會同步到docker容器里哮针,我們打開mysql.cnf文件進(jìn)行配置增加,如果該文件存在則編輯,不存在則新增十厢,都是會同步到容器中
cd /mydata/mysql/conf
sudo vi mysql.cnf
保存配置文件后,重啟mysql即可
docker restart mysql
接下來就跟平時裝mysql一樣蛮放,創(chuàng)建一個支持遠(yuǎn)程訪問的賬號等缩抡,首先進(jìn)入容器內(nèi)部,進(jìn)入后包颁,我們看到就跟正常linux服務(wù)器一樣的構(gòu)造
docker exec -it mysql /bin/bash
進(jìn)入容器后瞻想,我們再進(jìn)入mysql,然后執(zhí)行mysql -uroot -p娩嚼,再輸入設(shè)置的密碼即可
mysql -uroot -p
創(chuàng)建一個user的賬號蘑险,? xxxxxxxx為密碼
create user 'user'@'%'identified by 'xxxxxxxx';
grant all privileges on *.* to 'user'@'%' with grant option;
更改加密方式,可提供可視化工具鏈接
alter user 'user'@'%' identified with mysql_native_password;
alter user 'user'@'%' identified by 'xxxxxxxxx' password expire never;
刷新
flush privileges;
退出mysql后岳悟,再退出容器佃迄,重啟mysql
Ctrl + d
exit
docker restart mysql
此時應(yīng)該是可以使用遠(yuǎn)程可視化工具連接mysql了,如果還是連接錯誤贵少,查看防火墻是否開啟mysql的默認(rèn)端口3306呵俏,防火墻?firewalld 規(guī)則請自行百度,若本教程有錯誤地方春瞬,請指正柴信,謝謝!好了宽气,看完了,趕緊跟著教程動起來吧