<三>docker安裝mysql
docker 安裝mysql 跟安裝mongodb類似
1、拉取映象,可以使用docker search mysql 檢視版本並拉取指定版本,這裡只獲取最新版本
docker pull mysql/mysql-server
docker images 檢視目前本機有的映象
2、先用最簡單的命令將映象執行起來
docker run -d -p 3306:3306 --name my-sql mysql/mysql-server
docker ps 檢視當前執行的容器
完整 docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql --character-set-server=utf8 --collation-server-server=utf8_general_ci
-
-p 3306:3306:將容器的 3306 埠對映到主機的 3306 埠。
-
-v -v $PWD/conf:/etc/mysql/conf.d:將主機當前目錄下的 conf/my.cnf 掛載到容器的 /etc/mysql/my.cnf。
-
-v $PWD/logs:/logs:將主機當前目錄下的 logs 目錄掛載到容器的 /logs。
-
-v $PWD/data:/var/lib/mysql:將主機當前目錄下的data目錄掛載到容器的 /var/lib/mysql 。
-
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 使用者的密碼。
3、這時候我們用Navicat登入時需要使用者名稱和密碼,我們可以用docker logs 映象名字 的方式,讓docker建立一個初始密碼
docker logs my-sql
4、由於我們的mysql部署在docker 裡面,docker 本身就是一個小型系統,那麼要修改mysql的root密碼,需要進入docker環境,可以使用docker exec -it 容器名 bash
docker exec -it my-sql bash
使用 root賬戶登入mysql
mysql -uroot -p
輸入 上面docker給我們生成的密碼,就進入 了 mysql 的操作了
輸入 use mysql 介面上會提示我們要改密碼 ,下一步我們就更改密碼
輸入命令
Alter user 'root'@'localhost' IDENTIFIED BY '123456'
現在我們使用navicate 用 root賬號和密碼去連結一下,出現不被允許連線,如下圖
這是因為我們的root預設是localhost 本帶才能使用root連線,可以通過命令檢視
use mysql; select name,host from user;
下面我們建立一個賬戶 sa2,並將host 設定成%(允許外部遠端連結),用來作為遠端連線的賬戶
Create user 'sa2'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'sa2'@'%' WITH GRANT OPTION;
用Navicat輸入sa2賬號登入時發現如下問題:
查了資料以後 ,原來Mysql8.0的預設認證方式改用sha2了,但是資料庫連線工具都沒有sha2的外掛,所以報錯了。
那麼我們就改一下plugin就行了
執行如下命令:
alter user 'sa2'@'%' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY '123456';
再使用navicat連線,就成功了
至此ok了。。