遠端連結docker mysql資料庫
-
docker search mysql 檢視mysql映象(是去dockerHub網站搜素映象,遇到問題可以去該網站檢視官方文件,純英文文件估計會看起來不爽^_^)
-
docker pull 映象名稱[:tag]
例如:
docker pull mysql:5.6 (下載mysql5.6版本,不寫預設下載latest版本)
我這裡下載mysql官方映象(一般情況下載官方映象,stars也是最多的)
-
docker images 檢視下載好的映象
-
啟動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是映象名稱
|
- docker ps -a 檢視所有容器
docker ps 檢視正在執行中的容器
-
docker exec -it mysql bash
1 2 |
[root@localhost ~] # docker exec -it mysql bash
root@c4d4d2015328:/ # #已經進入容器 root@c4d4d2015328 【容器id】,進入後在操作和終端一樣了
|
-
mysql -u root -p 然後直接輸入密碼即可 密碼是在執行時設定的
目前為止,mysql安裝完成,然而目前只能本機訪問,我們希望是遠端能連上
-
grant all privileges on *.* to 'root'@'%' ; 給用於授予許可權
GRANT ALL PRIVILEGES ON *.* ‘root’@’%’ identified by ‘123123’ WITH GRANT OPTION; 這是網上流傳較多的寫法。實際上會報錯的。
flush privileges; 重新整理許可權
-
遠端連線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 實現遠端連線,結束