使用Docker部署MySQL的實(shí)現(xiàn)步驟
在 【Docker】 下部署,使用命令行進(jìn)行拉取。
1、拉取mysql
最新版本mysql:
docker pull mysql:latest
拉取5.7版本mysql:
docker pull mysql:5.7
2、啟動(dòng)容器鏡像
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
【說(shuō)明】
- -p 13306:3306 將容器的 3306 端口映射到主機(jī)的 3306 端口
- --name my-mysql 啟動(dòng)后容器名為 my-mysql
- -v $PWD/conf:/etc/mysql 將主機(jī)當(dāng)前目錄下的 conf/ 掛載到容器的 /etc/mysql (conf目錄為mysql的配置文件,不掛載也沒(méi)問(wèn)題)
- -v $PWD/logs:/logs 將主機(jī)當(dāng)前目錄下的 logs 目錄掛載到容器的 /logs (logs目錄為mysql的日志目錄,不掛載也沒(méi)影響)
- -v $PWD/data:/var/lib/mysql 將主機(jī)當(dāng)前目錄下的data目錄掛載到容器的 /var/lib/mysql (data目錄為mysql配置的數(shù)據(jù)文件存放路徑,這個(gè)還是建議掛載,是存儲(chǔ)數(shù)據(jù)的,容器down掉,還能再次掛載數(shù)據(jù)。)
- -e MYSQL_ROOT_PASSWORD=Dl123456 初始化 root 用戶的密碼
3、登錄容器
docker exec -it my-mysql bash ls
進(jìn)入MySQl容器
使用的 docker exec 命令,-it是參數(shù),bash表示創(chuàng)建一個(gè)交互界面
退出容器
方法一:如果要正常退出不關(guān)閉容器,請(qǐng)按Ctrl+P+Q進(jìn)行退出容器
方法二:如果使用exit退出,那么在退出之后會(huì)關(guān)閉容器
4、登錄mysql
mysql -uroot -p --default-character-set=utf8
輸入密碼登陸即可
查看數(shù)據(jù)庫(kù)
mysql> show databases;
設(shè)置能遠(yuǎn)程登錄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用戶在任何地方進(jìn)行遠(yuǎn)程登錄,并具有所有庫(kù)任何操作權(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)的寫(xiě)法,可能會(huì)報(bào)錯(cuò)或者無(wú)法連接
允許root用戶在任何地方進(jìn)行遠(yuǎn)程登錄
mysql> ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Dl123456';
允許root用戶在任何地方進(jìn)行遠(yuǎn)程登錄,并具有所有庫(kù)任何操作權(quán)限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Dl123456' WITH GRANT OPTION;
刷新
FLUSH PRIVILEGES; flush privileges;
如果現(xiàn)在還沒(méi)有連接成功建議重啟下Docker容器:
docker restart [CONTAINER ID]
退出mysql數(shù)據(jù)庫(kù):
exit
【說(shuō)明】
mysql 8.0版本以后 默認(rèn)使用 caching_sha2_password 身份驗(yàn)證機(jī)制 —— 從原來(lái)的 mysql_native_password 更改為 caching_sha2_password。
從 5.7 升級(jí) 8.0 版本的不會(huì)改變現(xiàn)有用戶的身份驗(yàn)證方法,但新用戶會(huì)默認(rèn)使用新的 caching_sha2_password 。
客戶端不支持新的加密方式。
更改加密方式
update user set password_expired = "Y"where user="root"; ALTER USER'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Dl123456';
遠(yuǎn)程連接
允許root用戶在一個(gè)特定的IP進(jìn)行遠(yuǎn)程登錄,并具有所有庫(kù)任何操作權(quán)限
在本機(jī)先使用root用戶登錄mysql進(jìn)行授權(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ù)庫(kù): exit
允許root用戶在一個(gè)特定的IP進(jìn)行遠(yuǎn)程登錄,并具有所有庫(kù)特定操作權(quán)限,
在本機(jī)先使用root用戶登錄mysql 進(jìn)行授權(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ù)庫(kù): exit
刪除用戶授權(quán),需要使用REVOKE命令,
先在本機(jī)登錄mysql進(jìn)行授權(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ù)庫(kù)[.表名] FROM user-name; REVOKE all on TEST-DB from test-user;
【注】該操作只是清除了用戶對(duì)于TEST-DB的相關(guān)授權(quán)權(quán)限,但是這個(gè)“test-user”這個(gè)用戶還是存在。
最后從用戶表內(nèi)清除用戶:
DELETE FROM user WHERE user="test-user";
重載授權(quán)表: FLUSH PRIVILEGES;
退出mysql數(shù)據(jù)庫(kù): exit
MYSQL權(quán)限詳細(xì)分類:
全局管理權(quán)限
- FILE: 在MySQL服務(wù)器上讀寫(xiě)文件。
- PROCESS: 顯示或殺死屬于其它用戶的服務(wù)線程。
- RELOAD: 重載訪問(wèn)控制表,刷新日志等。
- SHUTDOWN: 關(guān)閉MySQL服務(wù)。
數(shù)據(jù)庫(kù)/數(shù)據(jù)表/數(shù)據(jù)列權(quán)限
- ALTER: 修改已存在的數(shù)據(jù)表(例如增加/刪除列)和索引。
- CREATE: 建立新的數(shù)據(jù)庫(kù)或數(shù)據(jù)表。
- DELETE: 刪除表的記錄。
- DROP: 刪除數(shù)據(jù)表或數(shù)據(jù)庫(kù)。
- INDEX: 建立或刪除索引。
- INSERT: 增加表的記錄。
- SELECT: 顯示/搜索表的記錄。
- UPDATE: 修改表中已存在的記錄。
特別的權(quán)限
- ALL: 允許做任何事(和root一樣)。
- USAGE: 只允許登錄–其它什么也不允許做。
到此這篇關(guān)于使用Docker部署MySQL的實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)Docker部署MySQL內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
修改Docker鏡像默認(rèn)存儲(chǔ)位置的方法(解決方法)
這篇文章主要介紹了修改Docker鏡像默認(rèn)存儲(chǔ)位置的方法,如果上面運(yùn)行 Docker 服務(wù),經(jīng)過(guò)長(zhǎng)時(shí)間的使用,會(huì)使原本就比較大的分區(qū)越來(lái)越不夠用。如何更好地的處理這個(gè)問(wèn)題呢,本文給出解決方案,需要的朋友一起看看吧2021-04-04docker 基于golang鏡像構(gòu)建 ssh服務(wù)的方法
這篇文章主要介紹了docker 基于golang鏡像構(gòu)建 ssh服務(wù)的方法,添加goland環(huán)境變量的方法及centos下sshd和goland環(huán)境的docker文件配置方法,需要的朋友可以參考下2021-07-07淺談docker運(yùn)行nginx為什么要使用daemon off
這篇文章主要介紹了淺談docker運(yùn)行nginx為什么要使用daemon off,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01docker部署MySQL時(shí)無(wú)法啟動(dòng)問(wèn)題的解決方法
最近做項(xiàng)目,遇到這樣問(wèn)題,docker中的mysql不能啟動(dòng),下面這篇文章主要給大家介紹了關(guān)于docker部署MySQL時(shí)無(wú)法啟動(dòng)問(wèn)題的解決方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01Docker開(kāi)啟TLS和CA認(rèn)證的方法步驟
本文主要介紹了Docker開(kāi)啟TLS和CA認(rèn)證的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08Docker系列compose?ymal文件解析學(xué)習(xí)
這篇文章主要介紹了Docker系列之compose?ymal文件解析學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10Docker使用Dockerfile創(chuàng)建支持ssh服務(wù)自啟動(dòng)的容器鏡像
這篇文章主要介紹了Docker使用Dockerfile創(chuàng)建支持ssh服務(wù)自啟動(dòng)的容器鏡像,需要的朋友可以參考下2016-10-10