Docker啟用Mysql
使用容器化的Mysql相關語句

Docker啟用Mysql

抓映象檔

docker pull mysql/mysql-server:8.0
  • 拉一個8.0版本的mysql

執行 Image

docker run -d -it --name mysql8 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 -e MYSQL_DATABASE=mydb mysql:8 --default-authentication-plugin=mysql_native_password
  • -d:同--detach,以背景模式執行。
  • -v ~/mysql-docker-data:/var/lib/mysql:同--volume,掛載host目錄到container目錄,也就是host的~/mysql-docker-data會保存container /var/lib/mysql的資料;windos docker app這樣做的話,資料是暫時的重開機後會不見。
  • -it:同--interactive--tty,作用為運行container時可登入其bash操作。
  • --name mysql8,命名container名稱為mysql8
  • -p:同--publish。作用為將container的3306 port對映到"主機(host)“的3306 port
  • -e:同--env,設定環境變數。MYSQL_ROOT_PASSWORD設定MySQL root帳號的登入密碼為1234MYSQL_DATABASE設定資料庫名稱為mydb
  • mysql:8mysql為image名稱,8為image tag。所以運行的是mysql:8的image。
  • --default-authentication-plugin=mysql_native_password:把儲存密碼的方式改為MySQL 5的mysql_native_password,因為MySQL 8的儲存方式預設為caching_sha2_password,但一些免費的MySQL client圖形工具如Sequel Pro,Navicat等會無法連線,所以設定此參數。

檢視運行中的容器

docker ps

進入 Container

docker exec mysql8 mysql -u root -p
  • docker exec指令的作用為在運行的container執行指令,所以意思就是在mysql8這個container執行mysql -u root -p的指令。
docker container exec -it mysql8 /bin/bash
  • 遇到權限問題用這個

進入Mysql

mysql -uroot -p

新增 1 個開放外部連線的帳號

CREATE USER 'user01'@'%' IDENTIFIED BY '1234';
GRANT ALL ON your_database.* TO 'user01'@'%';
  • IDENTIFIED BY ‘1234’=密碼

允許 MySQL 被遠程訪問

grant all privileges on *.* to 'root'@'%';
  • 這是一個強力手段(有權限風險)

    flush privileges;
    
    • 刷新

上次修改於 2021-10-01