1. 程式人生 > 實用技巧 ><三>docker安裝mysql

<三>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了。。