Docker 安裝 MySQL8.0


 

docker 倉庫搜索mysql

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 連接就好了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM