1. 程式人生 > >DOCKER 建立 執行 授權遠端連線 MYSQL(阿里雲伺服器)

DOCKER 建立 執行 授權遠端連線 MYSQL(阿里雲伺服器)

1.docker建立mysql

sudo docker pull mysql 拉取mysql的映象 

ubuntu 需要加sudo
#-p 23306 :3306 這是 將mysql的3306埠對映到伺服器上的23306埠
#--name=stock_v2這個容器的名字
#MYSQL_ROOT_PASSWORD 管理員的 密碼
#MYSQL_USER 普通使用者的使用者名稱
#MYSQL_PASSWORD普通使用者的密碼
#MYSQL_DATABASE 資料庫名
#mysql:latest 代表最後的版本 可以指定成自己的
#-v /opt/mysql/stock-v2:/var/lib/mysql \ 

# /opt/mysql/stock-v2 這個目錄需要手動建立 伺服器上的儲存資料的地方 對映 /var/lib/mysql這個目錄 


docker run -itd --name stock_v2 --restart=always \
        -p 23306:3306 \
        -e mysqld \
        -e MYSQL_ROOT_PASSWORD=xxx\
        -e MYSQL_USER=xxx\
        -e MYSQL_PASSWORD=xxx\
        -e MYSQL_DATABASE=stock_v2 \
        -v /opt/mysql/stock-v2:/var/lib/mysql \
        -d mysql:latest

2.docker連線建立 mysql伺服器

 sudo docker exec -it  容器的名字 bash #開啟一個偽終端  

[email protected]:/# mysql -uroot -p

3.mysql給普通使用者授權

 select host,user,plugin,authentication_string from mysql.user; 

mysql>  select host,user,plugin,authentication_string from mysql.user; 
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| host      | user             | plugin                | authentication_string                                                  |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| %         | develop          | mysql_native_password | *8D20E4B2CA17D3AAEC1680514E4694C9A19005E5                              |
| %         | root             | caching_sha2_password | $A$005$CTzGT8w5CDBj^._Ot.bvhHPZr6F2Pv9UyumVw7hE2AmjpufACXJo.3YPfu2 |
| localhost | mysql.infoschema | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session    | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys        | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | root             | mysql_native_password | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19                              |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
6 rows in set (0.00 sec)

.備註:host為 % 表示不限制ip   localhost表示本機使用    plugin非mysql_native_password 則需要修改密碼

使用navicat連線會抱這個錯誤  我的root 使用者 host不限制ip但是 plugin 是caching_sha2_password 還是會報這個錯誤

所以還得授權

4.授權步驟

ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';  

#這裡我就不做演示了
#如果想給xxx使用者 就把root替換成xxx 密碼隨意
ALTER user 'xxx'@'%' IDENTIFIED WITH mysql_native_password BY '123456';  

#別忘了重新整理
FLUSH PRIVILEGES;  

#這時在使用Navicat連線就會連線成功

5.我是用的版本是mysql的5.6.35

遇見的問題 由於專案使用的

mysql-connector-java5.1.27  與mysql的最新版本mysql8.0不相容 所以把mysql的版本換成5左右 ,然後再docker內刪除了容器和映象但是忘了清理上面所對映的檔案資訊內容導致報出這個錯誤

sudo docker exec -it stock_v2_mysql /bin/bash 執行就會報錯

Error response from daemon: Container c1d145299544e7743abb07af380e4d4e511999caf8ffbf4fe7dd229b9f9a827a is restarting, wait until the container is running \

紅色箭頭哪裡沒有對映埠號