docker部署mysql Navicat遠程連接
-
docker search mysql 查看mysql鏡像(是去dockerHub網站搜素鏡像,遇到問題可以去該網站查看官方文檔,純英文文檔估計會看起來不爽^_^)
-
docker pull 鏡像名稱[:tag]
例如:
docker pull mysql:5.6 (下載mysql5.6版本,不寫默認下載latest版本)
我這里下載mysql官方鏡像(一般情況下載官方鏡像,stars也是最多的)
-
docker images 查看下載好的鏡像
-
啟動mysql實例
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 進入容器內部 mysql 是上邊運行時為容器取的別名 也可以用id替代
[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 實現遠程連接,結束