使用Docker部署MySQL的實現(xiàn)步驟
在 【Docker】 下部署,使用命令行進行拉取。
1、拉取mysql
最新版本mysql:
docker pull mysql:latest
拉取5.7版本mysql:
docker pull mysql:5.7
2、啟動容器鏡像
docker run -p 13306:3306 --name my-mysql -v $PWD/conf:/etc/mysql -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=Dl123456 -d mysql:5.7
【說明】
- -p 13306:3306 將容器的 3306 端口映射到主機的 3306 端口
- --name my-mysql 啟動后容器名為 my-mysql
- -v $PWD/conf:/etc/mysql 將主機當前目錄下的 conf/ 掛載到容器的 /etc/mysql (conf目錄為mysql的配置文件,不掛載也沒問題)
- -v $PWD/logs:/logs 將主機當前目錄下的 logs 目錄掛載到容器的 /logs (logs目錄為mysql的日志目錄,不掛載也沒影響)
- -v $PWD/data:/var/lib/mysql 將主機當前目錄下的data目錄掛載到容器的 /var/lib/mysql (data目錄為mysql配置的數(shù)據(jù)文件存放路徑,這個還是建議掛載,是存儲數(shù)據(jù)的,容器down掉,還能再次掛載數(shù)據(jù)。)
- -e MYSQL_ROOT_PASSWORD=Dl123456 初始化 root 用戶的密碼
3、登錄容器
docker exec -it my-mysql bash ls
進入MySQl容器
使用的 docker exec 命令,-it是參數(shù),bash表示創(chuàng)建一個交互界面
退出容器
方法一:如果要正常退出不關(guān)閉容器,請按Ctrl+P+Q進行退出容器
方法二:如果使用exit退出,那么在退出之后會關(guān)閉容器
4、登錄mysql
mysql -uroot -p --default-character-set=utf8
輸入密碼登陸即可
查看數(shù)據(jù)庫
mysql> show databases;
設(shè)置能遠程登錄mysql
mysql> use mysql
輸出
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
查看用戶
mysql> select host,user from user;
設(shè)置root用戶在任何地方進行遠程登錄,并具有所有庫任何操作權(quán)限。
(暴露的攻擊面太大)。
給用于授予權(quán)限 grant all privileges on *.* to 'root'@'%' ;
修改用戶的密碼和加密方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密碼';
刷新
FLUSH PRIVILEGES;
下面是網(wǎng)上查到最多授權(quán)的寫法,可能會報錯或者無法連接
允許root用戶在任何地方進行遠程登錄
mysql> ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Dl123456';
允許root用戶在任何地方進行遠程登錄,并具有所有庫任何操作權(quán)限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Dl123456' WITH GRANT OPTION;
刷新
FLUSH PRIVILEGES; flush privileges;
如果現(xiàn)在還沒有連接成功建議重啟下Docker容器:
docker restart [CONTAINER ID]
退出mysql數(shù)據(jù)庫:
exit
【說明】
mysql 8.0版本以后 默認使用 caching_sha2_password 身份驗證機制 —— 從原來的 mysql_native_password 更改為 caching_sha2_password。
從 5.7 升級 8.0 版本的不會改變現(xiàn)有用戶的身份驗證方法,但新用戶會默認使用新的 caching_sha2_password 。
客戶端不支持新的加密方式。
更改加密方式
update user set password_expired = "Y"where user="root"; ALTER USER'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Dl123456';
遠程連接
允許root用戶在一個特定的IP進行遠程登錄,并具有所有庫任何操作權(quán)限
在本機先使用root用戶登錄mysql進行授權(quán)操作:
mysql -u root -p"youpassword"
GRANT ALL PRIVILEGES ON *.* TO root@"172.16.16.152" IDENTIFIED BY "youpassword" WITH GRANT OPTION;
重載授權(quán)表: FLUSH PRIVILEGES;
退出mysql數(shù)據(jù)庫: exit
允許root用戶在一個特定的IP進行遠程登錄,并具有所有庫特定操作權(quán)限,
在本機先使用root用戶登錄mysql 進行授權(quán)操作:
mysql -u root -p"youpassword"
GRANT select,insert,update,delete ON *.* TO root@"172.16.16.152" IDENTIFIED BY "youpassword";
重載授權(quán)表: FLUSH PRIVILEGES;
退出mysql數(shù)據(jù)庫: exit
刪除用戶授權(quán),需要使用REVOKE命令,
先在本機登錄mysql進行授權(quán)操作:
mysql -u root -p"youpassword"
GRANT select,insert,update,delete ON TEST-DB TO test-user@"172.16.16.152" IDENTIFIED BY "youpassword";
REVOKE privileges ON 數(shù)據(jù)庫[.表名] FROM user-name; REVOKE all on TEST-DB from test-user;
【注】該操作只是清除了用戶對于TEST-DB的相關(guān)授權(quán)權(quán)限,但是這個“test-user”這個用戶還是存在。
最后從用戶表內(nèi)清除用戶:
DELETE FROM user WHERE user="test-user";
重載授權(quán)表: FLUSH PRIVILEGES;
退出mysql數(shù)據(jù)庫: exit
MYSQL權(quán)限詳細分類:
全局管理權(quán)限
- FILE: 在MySQL服務器上讀寫文件。
- PROCESS: 顯示或殺死屬于其它用戶的服務線程。
- RELOAD: 重載訪問控制表,刷新日志等。
- SHUTDOWN: 關(guān)閉MySQL服務。
數(shù)據(jù)庫/數(shù)據(jù)表/數(shù)據(jù)列權(quán)限
- ALTER: 修改已存在的數(shù)據(jù)表(例如增加/刪除列)和索引。
- CREATE: 建立新的數(shù)據(jù)庫或數(shù)據(jù)表。
- DELETE: 刪除表的記錄。
- DROP: 刪除數(shù)據(jù)表或數(shù)據(jù)庫。
- INDEX: 建立或刪除索引。
- INSERT: 增加表的記錄。
- SELECT: 顯示/搜索表的記錄。
- UPDATE: 修改表中已存在的記錄。
特別的權(quán)限
- ALL: 允許做任何事(和root一樣)。
- USAGE: 只允許登錄–其它什么也不允許做。
到此這篇關(guān)于使用Docker部署MySQL的實現(xiàn)步驟的文章就介紹到這了,更多相關(guān)Docker部署MySQL內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker 基于golang鏡像構(gòu)建 ssh服務的方法
這篇文章主要介紹了docker 基于golang鏡像構(gòu)建 ssh服務的方法,添加goland環(huán)境變量的方法及centos下sshd和goland環(huán)境的docker文件配置方法,需要的朋友可以參考下2021-07-07淺談docker運行nginx為什么要使用daemon off
這篇文章主要介紹了淺談docker運行nginx為什么要使用daemon off,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01Docker使用Dockerfile創(chuàng)建支持ssh服務自啟動的容器鏡像
這篇文章主要介紹了Docker使用Dockerfile創(chuàng)建支持ssh服務自啟動的容器鏡像,需要的朋友可以參考下2016-10-10