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帳號的登入密碼為1234
,MYSQL_DATABASE
設定資料庫名稱為mydb
。mysql:8
:mysql
為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