1. 程式人生 > 其它 >遠端連結docker mysql資料庫

遠端連結docker mysql資料庫

 

  1. docker search mysql   檢視mysql映象(是去dockerHub網站搜素映象,遇到問題可以去該網站檢視官方文件,純英文文件估計會看起來不爽^_^)

 


 

  1. docker pull 映象名稱[:tag]       

例如:

docker pull mysql:5.6  (下載mysql5.6版本,不寫預設下載latest版本

 

我這裡下載mysql官方映象(一般情況下載官方映象,stars也是最多的)  

 

 


 

  1. docker images  檢視下載好的映象

 

 

  1. 啟動mysql例項

 

  

1 2 3 4 5 6 7 docker run --name mysql  -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql       -name 為mysql的例項設定別名。 -p 3306為對外暴露的埠。3306是內部埠       -e MYSQL_ROOT_PASSWORD 設定mysql登入密碼     -d 以守護程序執行(後臺執行) 最後的mysql是映象名稱

  


 

  1. docker ps -a   檢視所有容器

   docker ps           檢視正在執行中的容器

 

 

 


 

  1.  docker exec -it mysql bash 
        進入容器內部  mysql 是上邊執行時為容器取的別名 也可以用id替代

 

1 2 [root@localhost ~]# docker exec -it mysql bash root@c4d4d2015328:/#                 #已經進入容器 root@c4d4d2015328 【容器id】,進入後在操作和終端一樣了

  


 

  1. mysql -u root -p      然後直接輸入密碼即可 密碼是在執行時設定的

目前為止,mysql安裝完成,然而目前只能本機訪問,我們希望是遠端能連上

 

  1. grant all privileges on *.*  to 'root'@'%' ;   給用於授予許可權

    GRANT ALL PRIVILEGES ON *.*  ‘root’@’%’ identified by ‘123123’ WITH GRANT OPTION;  這是網上流傳較多的寫法。實際上會報錯的。

   flush privileges;  重新整理許可權

 

 


 

 

  1.  遠端連線mysql

然而我們用navicat還是不能連線mysql,提示:

 

1251-Client does not support authentication  protocol requested by server;

由於我安裝的是8.0.16版本

 

mysql 8.0版本以後 預設使用 caching_sha2_password 身份驗證機制 —— 從原來的 mysql_native_password 更改為 caching_sha2_password。 

從 5.7 升級 8.0 版本的不會改變現有使用者的身份驗證方法,但新使用者會預設使用新的 caching_sha2_password 。

客戶端不支援新的加密方式。

 

修改使用者的密碼和加密方式

 

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密碼';

再重新整理許可權

 flush privileges;

 

再用navica連線

 

 

docker部署mysql 實現遠端連線,結束