docker search mysql
docker 倉庫拉取mysql8.0
docker pull mysql:
查看本地倉庫鏡像是否下載成功
docker images mysql:8.0
備注: 因為我docker目前只有這一個鏡像,我就用 docker images 查看了
安裝運行mysql8.0
docker run \
-p 3308:3306 \
-e MYSQL_ROOT_PASSWORD=root \
-v /home/docker/mysql/data:/var/lib/mysql:rw \
-v /home/docker/mysql/log:/var/log/mysql:rw \
-v /home/docker/mysql/mysql-files:/var/lib/mysql-files/ \
--name mysql8.0 \
--restart=always \
-d mysql:8.0
拷貝配置文件到宿主機:
docker cp mysql8.0:/etc/mysql/my.cnf /home/docker/mysql/conf/
停止容器:
docker stop mysql8.0
刪除容器:
docker rm mysql8.0
重新執行生成容器(增加了對配置文件my.cnf的映射,直接映射,容器啟動會有問題,通過執行下面-v后面的映射,最終實現數據持久化,數據存放在宿主機而不是容器內):
docker run \
-p 3308:3306 \
-e MYSQL_ROOT_PASSWORD=root \
-v /home/docker/mysql/data:/var/lib/mysql:rw \
-v /home/docker/mysql/log:/var/log/mysql:rw \
-v /home/docker/mysql/conf/my.cnf:/etc/mysql/my.cnf:rw \
-v /home/docker/mysql/mysql-files:/var/lib/mysql-files/ \
--name mysql8.0 \
--restart=always \
-d mysql:8.0
上面代碼的意思是: docker run -p 本地主機端口號:容器服務端口號 --name 容器名字 [-e 配置信息修改] -d 鏡像名字
查看mysql8.0容器運行情況
docker ps
進入mysql
根據上面查詢到的容器id執行
docker exec -it mysql8.0 bash
連接mysql
mysql -uroot -p
輸入密碼
切換數據庫
use mysql
使用客戶端工具遠程連接mysql
因為mysql8.x 版本的密碼加密的方式,Navicat識別不了。先去查看mysql8.0的版本加密方式。
select host,user,authentication_string,plugin from user;
我們需要將mysql的加密方式改成 mysql_native_password。
alter user ‘root’@’%’ identified with mysql_native_password by ‘root’;(修改加密方式,復制到控制台可能單引號丟失,檢查下如果丟失,手動輸入)
select host,user,authentication_string,plugin from user;(查看是否將加密方式修改過來)
然后再去naVicat 連接就好了。