1.查看docker倉庫中mysql的最新版 https://hub.docker.com/_/mysql
- 或者在linux中直接搜索[圖2]:
#docker search
docker search mysql
2.下載鏡像(因為我已經(jīng)安裝了就不貼圖了)
#docker pull 下載命令
docker pull mysql:8.0.16
3.查看是否下載成功
docker images |grep mysql
4.創(chuàng)建目錄mysql三妈,用于存放后面的相關(guān)東西
#這里路徑自行修改
mkdir -p /project/docker/mysql/logs /project/docker/mysql/conf /project/docker/mysql/data
- data目錄將映射為mysql容器配置的數(shù)據(jù)文件存放路徑
- logs目錄將映射為mysql容器的日志目錄
- conf目錄里的配置文件將映射為mysql容器的配置文件
5.啟動mysql鏡像
docker run -p 3306:3306 --restart=always -v /project/docker/mysql/conf:/etc/mysql/conf.d -v /project/docker/mysql/logs:/var/log/mysql -v /project/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql -d mysql:8.0.16
- --name: 以啥名字啟動容器
- -d mysql:需要啟動的容器的名稱
- -p 3306:3306:將容器的 3306 端口映射到主機(jī)的 3306 端口
- -v /project/docker/mysql/conf:/etc/mysql/conf.d:將主機(jī)當(dāng)前目錄下的 /project/docker/mysql/conf/my.cnf 掛載到容器的 /etc/mysql/my.cnf金句。
- /project/docker/mysql/logs:/logs:將主機(jī)當(dāng)前目錄下的 logs 目錄掛載到容器的 /logs灌闺。
- /project/docker/mysql/data:/var/lib/mysql :將主機(jī)當(dāng)前目錄下的data目錄掛載到容器的 /var/lib/mysql
- -e MYSQL_ROOT_PASSWORD=12345:初始化mysql密碼
6.查看鏡像是否啟動成功
docker ps
#進(jìn)入mysql鏡像
docker exec -it mysql bash
#進(jìn)入mysql
mysql -uroot -p123456
#停止鏡像 name/id
docker stop id
#啟動鏡像 name/id
docker start name/id
- 若安裝成功也連接不上:
- 開放阿里云端口(在安全組中添加3306)
- 開放防火墻端口
#檢查防火墻端口
netstat -apn|grep 3306
#若3306被占用請刪除鏡像重新run一個端口
#開啟3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
#在不改變狀態(tài)的條件下重新加載防火墻
firewall-cmd --reload
- 設(shè)置mysql權(quán)限箩张,root允許被任意IP地址訪問
update mysql.user set host = '%' where user = 'root';
#GRANT ALL ON *.* TO 'root'@'%';
#若仍然不行
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root123456';
#刷新權(quán)限
flush privileges;
#'root'@'%' 中的root為用戶名,'%'為user表host字段的值,'root123456'為用戶密碼