docker 部署mysql詳細(xì)過(guò)程(docker部署常見(jiàn)應(yīng)用)
之前給大家介紹過(guò):docker(部署常見(jiàn)應(yīng)用):docker部署nginx
docker部署mysql:5.7.26# 下載鏡像docker pull mysql:5.7.26# 查看鏡像docker images|grep mysql# 啟動(dòng)容器鏡像,建議在/usr/local/workspace/mysql 下執(zhí)行以下docker run 命令 docker run -p 13306:3306 --name my-mysql -v $PWD/conf:/etc/mysql -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.26 # 建議寫死路徑 docker run -p 13306:3306 --name my-mysql -v /usr/local/workspace/mysql/conf:/etc/mysql -v /usr/local/workspace/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.26
命令說(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=123456 初始化 root 用戶的密碼
查看容器啟動(dòng)情況[xxx@xxx-xx-xxx mysql]# docker ps|grep mysql5291ed3fe987mysql:5.7.26'docker-entrypoint.s?? 5 minutes ago Up 5 minutes33060/tcp, 0.0.0.0:13306->3306/tcp my-mysql進(jìn)入mysql容器
# 登錄容器[root@cbov10-sso55-xxx ~]# docker exec -it my-mysql bashroot@5291ed3fe987:/# lsbin dev entrypoint.sh home lib64 media opt root sbin sys usrboot docker-entrypoint-initdb.d etc lib logs mnt proc run srv tmp var# 登錄mysqlroot@5291ed3fe987:/# mysql -uroot -p --default-character-set=utf8Enter password: Welcome to the MySQL monitor. Commands end with ; or g.Your MySQL connection id is 2Server version: 5.7.26 MySQL Community Server (GPL)Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type ’help;’ or ’h’ for help. Type ’c’ to clear the current input statement.mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || sys|+--------------------+4 rows in set (0.00 sec)設(shè)置能遠(yuǎn)程登錄mysql
mysql> use mysqlReading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> select host,user from user;+-----------+---------------+| host | user |+-----------+---------------+| % | root || localhost | mysql.session || localhost | mysql.sys || localhost | root || localhost | test |+-----------+---------------+5 rows in set (0.00 sec)# 設(shè)置root用戶在任何地方進(jìn)行遠(yuǎn)程登錄,并具有所有庫(kù)任何操作權(quán)限,(公司絕對(duì)不能這么做,暴露的攻擊面太大),這里只是做測(cè)試。mysql> GRANT ALL PRIVILEGES ON *.* TO ’root’@’%’ IDENTIFIED BY ’123456’ WITH GRANT OPTION;Query OK, 0 rows affected, 1 warning (0.00 sec)# 刷新權(quán)限mysql> FLUSH PRIVILEGES;Query OK, 0 rows affected (0.00 sec)# 退出mysql mysql> exitBye
關(guān)于mysql授權(quán),各位可自行百度,這里推薦
mysql之權(quán)限管理
Mysql權(quán)限控制
遠(yuǎn)程登錄測(cè)試使用數(shù)據(jù)庫(kù)連接工具連接 宿主機(jī)ip+宿主機(jī)暴露的端口。
前面我們啟動(dòng)容器的時(shí)候-p13306:3306 標(biāo)識(shí)宿主機(jī)端口 13306 映射 到容器的 3306 ,假如我們宿主機(jī),就是服務(wù)器的ip地址為10.10.10.11
應(yīng)該連接 10.10.10.11:13306 連接的數(shù)據(jù)庫(kù)這里推薦新建test 數(shù)據(jù)庫(kù) 做測(cè)試,如下
# 查看容器[root@cbov10-sso55-113 mysql]# docker ps|grep mysql5291ed3fe987mysql:5.7.26'docker-entrypoint.s?? 4 hours ago Up 4 hours 33060/tcp, 0.0.0.0:13306->3306/tcp my-mysql# 停止容器 ( 5291ed3fe987 這里是mysql容器id)[root@cbov10-sso55-113 mysql]# docker stop 5291ed3fe9875291ed3fe987# 刪除容器[root@cbov10-sso55-113 mysql]# docker rm 5291ed3fe9875291ed3fe987
去我們?cè)葤燧d目錄下查看
掛載宿主機(jī)目錄是 /usr/local/workspace/mysql,
[root@cbov10-sso55-xxx mysql]# cd data/[root@cbov10-sso55-xxx data]# lsauto.cnf ca.pem client-key.pem ibdata1 ib_logfile1 performance_schema public_key.pem server-key.pem testca-key.pem client-cert.pem ib_buffer_pool ib_logfile0 mysqlprivate_key.pem server-cert.pem sys
數(shù)據(jù)文件還在!我們?cè)僦匦聢?zhí)行
# 這里要注意和掛載的宿主機(jī)目錄一定要一致,第一次在 /usr/local/workspace/mysql 下執(zhí)行的命令,這次也應(yīng)該在同目錄# 當(dāng)然,寫成固定路徑就沒(méi)有上面的問(wèn)題[root@cbov10-sso55-xxx mysql]# docker run -p 13306:3306 --name my-mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.2674c91431533ebb9bbfd3a1123b3f910f54770a08ad08c3c37cbbb996d29e0428# 這里可以看出容器id已經(jīng)發(fā)生了變化[root@cbov10-sso55-xxx mysql]# docker ps |grep mysql74c91431533emysql:5.7.26'docker-entrypoint.s?? 16 seconds ago Up 15 seconds 33060/tcp, 0.0.0.0:13306->3306/tcp my-mysql# 進(jìn)入容器[root@cbov10-sso55-xxx mysql]# docker exec -it bash 74c91431533eError: No such container: bash[root@cbov10-sso55-xxx mysql]# docker exec -it 74c91431533e bashroot@74c91431533e:/# mysql -u root -pEnter password: Welcome to the MySQL monitor. Commands end with ; or g.Your MySQL connection id is 2Server version: 5.7.26 MySQL Community Server (GPL)Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type ’help;’ or ’h’ for help. Type ’c’ to clear the current input statement.mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || sys|| test |+--------------------+5 rows in set (0.00 sec)
發(fā)現(xiàn)建的test數(shù)據(jù)庫(kù)也在!mysql容器刪除前后,data文件大小也可以驗(yàn)證,讀者殼自行嘗試。
宿主機(jī)文件保存好的話,數(shù)據(jù)可以不丟失。
說(shuō)明:
其實(shí) 生產(chǎn)比做的這個(gè)測(cè)試要復(fù)雜的多,mysql集群,主備,數(shù)據(jù)同步,網(wǎng)絡(luò) 等等問(wèn)題,用docker解決確實(shí)為難
mysql 容器 的管理或者說(shuō),有狀態(tài)應(yīng)用的管理還得一個(gè)比較流弊的東西,這個(gè)項(xiàng)目是 大名鼎鼎的kubernetes。
推薦
docker官網(wǎng)
kubernetes官網(wǎng)
到此這篇關(guān)于docker 部署mysql(docker部署常見(jiàn)應(yīng)用)的文章就介紹到這了,更多相關(guān)docker 部署mysql內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. MySQL基礎(chǔ)教程9 —— 函數(shù)之日期和時(shí)間函數(shù)2. 用SQL SERVER記錄站點(diǎn)日志3. mssql鎖基礎(chǔ)教程4. 數(shù)據(jù)庫(kù)人員手冊(cè)之ORACLE應(yīng)用源碼5. MySQL 千萬(wàn)級(jí)數(shù)據(jù)量如何快速分頁(yè)6. Mybatis查詢方法如何實(shí)現(xiàn)沒(méi)有返回值7. DB2 XML 全文搜索之為文本搜索做準(zhǔn)備8. 快速解決mysql導(dǎo)出scv文件亂碼、躥行的問(wèn)題9. Microsoft Office Access修改代碼字體大小的方法10. centos 7安裝mysql5.5和安裝 mariadb使用的命令
