电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Docker 部署 Mysql8.0的方法示例

瀏覽:141日期:2023-10-24 14:00:25

1. 參照官網,安裝docker

2.拉取mysql鏡像 (默認拉取最新的鏡像)8.0.11

docker pull mysql

3.在宿主機創建持久化 mysql data 及mysql.cnf

mkdir /usr/local/mysqlData/test/cnfmkdir /usr/local/mysqlData/test/datavi /usr/loal/mysqlData/test/cnf/mysql.cnf

設置本地文件共享:

Docker -> Preferences... -> File Sharing

Docker 部署 Mysql8.0的方法示例

4.添加操作權限

chmod 777 /usr/local/mysqlData/test/data 備注:掛載時權限驗證(操作權限)

5.運行鏡像,設置初始密碼、本機與docker端口的映射與掛載本地數據盤 (啟動msyql服務)

docker run -itd -p 3307:3306 --name test_mysql -v /usr/local/mysqlData/test/conf:/etc/mysql -v /usr/local/mysqlData/test/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql

運行結果:

Docker 部署 Mysql8.0的方法示例

6. 進入test_mysql 容器

Docker exec -it test_mysql bash

如圖:

Docker 部署 Mysql8.0的方法示例

7.在容器內登錄mysql

Docker 部署 Mysql8.0的方法示例

8.查看用戶信息

mysql> select user,host,authentication_string from mysql.user;+------------------+-----------+------------------------------------------------------------------------+| user | host | authentication_string |+------------------+-----------+------------------------------------------------------------------------+| root | % | $A$005$7o{’|’AomAw(QvF#.p5wLtCnrG6yX6XQdDVQivGr96POVL.gKnhIAhUhl3. || mysql.infoschema | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE || mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE || mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE || root | localhost | $A$005$0.-%i)H{uYi@zFo7uYF82fYw7DsA93vYLr4uZv6I1tSKao0sbzzcDap3 |+------------------+-----------+------------------------------------------------------------------------+5 rows in set (0.00 sec)

9.設置權限(為root分配權限,以便可以遠程連接)

mysql> grant all PRIVILEGES on *.* to root@’%’ WITH GRANT OPTION;Query OK, 0 rows affected (0.01 sec)

10.由于Mysql5.6以上的版本修改了Password算法,這里需要更新密碼算法,便于使用Navicat連接

mysql> grant all PRIVILEGES on *.* to root@’%’ WITH GRANT OPTION;Query OK, 0 rows affected (0.01 sec)mysql> ALTER user ’root’@’%’ IDENTIFIED BY ’123456’ PASSWORD EXPIRE NEVER;Query OK, 0 rows affected (0.11 sec)mysql> ALTER user ’root’@’%’ IDENTIFIED WITH mysql_native_password BY ’123456’;Query OK, 0 rows affected (0.11 sec)mysql> FLUSH PRIVILEGES;Query OK, 0 rows affected (0.01 sec)

11. 使用navicat 連接mysql,如圖:

Docker 部署 Mysql8.0的方法示例

Docker 部署 Mysql8.0的方法示例

12.建庫、建表、加數據

Docker 部署 Mysql8.0的方法示例

Docker 部署 Mysql8.0的方法示例

Docker 部署 Mysql8.0的方法示例

查看掛載本地數據盤的內容:

Docker 部署 Mysql8.0的方法示例

13. 測試將容器移除后,數據是否仍然存在

docker rm -f test_msyql

Docker 部署 Mysql8.0的方法示例

容器已經移除了。重新部署test_mysql,參照第5的步驟,進入新容器,訪問數據庫:

xushijiandeiMac:data xushijian$ docker run -itd -p 3307:3306 --name test_mysql -v /usr/local/mysqlData/test/conf:/etc/mysql -v /usr/local/mysqlData/test/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql65b7a60050aaef5765ed055acfd071c7c76f60e85dc25d0e73e0d56eae14aed1xushijiandeiMac:data xushijian$ docker exec -it test_mysql bashroot@65b7a60050aa:/# mysql -uroot -pEnter password: Welcome to the MySQL monitor. Commands end with ; or g.Your MySQL connection id is 8Server version: 8.0.11 MySQL Community Server - GPLCopyright (c) 2000, 2018, 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.01 sec)mysql> use test;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> select * from user_user;+---------+-----------+-------------+--------+| user_id | user_name | phone | note |+---------+-----------+-------------+--------+| 1 | 沒長正 | 13980000000 | 測試 |+---------+-----------+-------------+--------+1 row in set (0.06 sec)

發現數據仍然可以使用,不需要額外的配置,實現了數據的持久化。

阿里云上docker 部署 MySQL(通過編排模板部署)

<1. 配置同第3步類似(只是目錄變化)

master: image: ’mysql:latest’ environment: - MYSQL_ROOT_PASSWORD=123456 ports: - ’3307:3306/tcp’ volumes: - ’/usr/local/mysqlData/master/conf:/etc/mysql:rw’ - ’/usr/local/mysqlData/master/data:/var/lib/mysql:rw’ labels: aliyun.scale: ’1’

<2.如下圖,已部署完成

[root@c13a6d832fd0a49398c62002361d75c60-node1 ~]# clear[root@c13a6d832fd0a49398c62002361d75c60-node1 ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES8597b7539a3a mysql:latest 'docker-entrypoint...' 3 minutes ago Up 3 minutes 0.0.0.0:3307->3306/tcp mysql_master_1

Docker 部署 Mysql8.0的方法示例

<3.進入容器,進行權限設置,后續過程參照本機

[root@c13a6d832fd0a49398c62002361d75c60-node1 /]# docker exec -it mysql_master_1 bashroot@2fc0bbf48941-mysql-master-1:/# mysql -uroot -pEnter password: Welcome to the MySQL monitor. Commands end with ; or g.Your MySQL connection id is 8Server version: 8.0.11 MySQL Community Server - GPLCopyright (c) 2000, 2018, 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>

<4. 開放3307端口,使得外網可以訪問

云服務器ECS -> 安全組 -> 選擇所在的地區 ->配置規則 -> 添加安全組

Docker 部署 Mysql8.0的方法示例

添加安全組,如圖:

Docker 部署 Mysql8.0的方法示例

5.外網訪問,如下圖

Docker 部署 Mysql8.0的方法示例

已連接成功。

主從環境搭建:

主庫:

[root@c13a6d832fd0a49398c62002361d75c60-node1 ~]# docker exec -it mysql_master_1 bashroot@2fc0bbf48941-mysql-master-1:/# mysql -uroot -pEnter password: Welcome to the MySQL monitor. Commands end with ; or g.Your MySQL connection id is 9Server version: 8.0.11 MySQL Community Server - GPLCopyright (c) 2000, 2018, 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.30 sec)mysql> create database test;Query OK, 1 row affected (0.12 sec)mysql> show database;ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ’database’ at line 1mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || sys|| test|+--------------------+5 rows in set (0.00 sec)

從庫:

[root@c13a6d832fd0a49398c62002361d75c60-node1 ~]# docker exec -it mysql-slave_slave_1 bashroot@c8661e16e3fd-mysql-slave-slave-1:/# mysql -uroot -pEnter password: Welcome to the MySQL monitor. Commands end with ; or g.Your MySQL connection id is 10Server version: 8.0.11 MySQL Community Server - GPLCopyright (c) 2000, 2018, 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.40 sec)mysql> show slave statusG*************************** 1. row ***************************Slave_IO_State: Waiting for master to send event 主從配置成功! Master_Host: 47.94.225.124 Master_User: rep Master_Port: 3307Connect_Retry: 60 Master_Log_File: binlog.000003 Read_Master_Log_Pos: 155Relay_Log_File: c8661e16e3fd-mysql-slave-slave-1-relay-bin.000004Relay_Log_Pos: 363 Relay_Master_Log_File: binlog.000003 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 155 Relay_Log_Space: 762 Until_Condition: NoneUntil_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path:Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error: Last_SQL_Errno: 0Last_SQL_Error: Replicate_Ignore_Server_Ids:Master_Server_Id: 1 Master_UUID: a482f5fe-80fb-11e8-9fb1-0242ac12020c Master_Info_File: mysql.slave_master_info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0 Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: Master_public_key_path: Get_master_public_key: 01 row in set (0.00 sec)mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || sys|+--------------------+4 rows in set (1.01 sec)mysql> show database;ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ’database’ at line 1mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || sys|| test|+--------------------+5 rows in set (0.00 sec)

主從庫原理分析:

Docker 部署 Mysql8.0的方法示例

i/o線程去請求主庫 的binlog,并將得到的binlog日志寫到relay log(中繼日志) 文件中; 主庫會生成一個 log dump 線程,用來給從庫 i/o線程傳binlog;

SQL 線程,會讀取relay log文件中的日志,并解析成具體操作,來實現主從的操作一致,而最終數據一致;

即: 從庫IO線程請求 -> 中繼日志 ->獲取binlog ->從庫SQL線程,解析

參考:

https://docs.docker.com/ docker 官網文檔

https://blog.csdn.net/gf0515/article/details/80466213 Mac Navicat連接Docker MySql8.0

docker mysql 主從復制

https://blog.csdn.net/qq_28804275/article/details/80891951 主從環境搭建

docker mysql Dockerfile mysql 開源鏡像Dockerfile及配置

https://www.cnblogs.com/Aiapple/p/5792939.html 主從復制原理、高可用分析

http://www.cnblogs.com/Aiapple/p/5793786.html 實戰

到此這篇關于Docker 部署 Mysql8.0的方法示例的文章就介紹到這了,更多相關Docker 部署 Mysql8.0內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 武汉高低温试验箱_恒温恒湿试验箱厂家-武汉蓝锐环境科技有限公司 | 道达尔润滑油-食品级润滑油-道达尔导热油-合成导热油,深圳道达尔代理商合-深圳浩方正大官网 | 风信子发稿-专注为企业提供全球新闻稿发布服务 | 河南空气能热水器-洛阳空气能采暖-洛阳太阳能热水工程-洛阳润达高科空气能商行 | 齿式联轴器-弹性联轴器-联轴器厂家-江苏诺兴传动联轴器制造有限公司 | 昆山PCB加工_SMT贴片_PCB抄板_线路板焊接加工-昆山腾宸电子科技有限公司 | 精密五金加工厂-CNC数控车床加工_冲压件|蜗杆|螺杆加工「新锦泰」 | 【MBA备考网】-2024年工商管理硕士MBA院校/报考条件/培训/考试科目/提前面试/考试/学费-MBA备考网 | 滑板场地施工_极限运动场地设计_滑板公园建造_盐城天人极限运动场地建设有限公司 | MTK核心板|MTK开发板|MTK模块|4G核心板|4G模块|5G核心板|5G模块|安卓核心板|安卓模块|高通核心板-深圳市新移科技有限公司 | 上海软件开发-上海软件公司-软件外包-企业软件定制开发公司-咏熠科技 | ASA膜,ASA共挤料,篷布色母料-青岛未来化学有限公司 | 炭黑吸油计_测试仪,单颗粒子硬度仪_ASTM标准炭黑自销-上海贺纳斯仪器仪表有限公司(HITEC中国办事处) | 冷水机-工业冷水机-冷水机组-欧科隆品牌保障 | 建筑资质代办-建筑企业资质代办机构-建筑资质代办公司 | 电磁流量计_智能防腐防爆管道式计量表-金湖凯铭仪表有限公司 | 活性氧化铝球|氧化铝干燥剂|分子筛干燥剂|氢氧化铝粉-淄博同心材料有限公司 | 自动记录数据电子台秤,记忆储存重量电子桌称,设定时间记录电子秤-昆山巨天 | 有机肥设备生产制造厂家,BB掺混肥搅拌机、复合肥设备生产线,有机肥料全部加工设备多少钱,对辊挤压造粒机,有机肥造粒设备 -- 郑州程翔重工机械有限公司 | 色油机-色母机-失重|称重式混料机-称重机-米重机-拌料机-[东莞同锐机械]精密计量科技制造商 | 滚塑PE壳体-PE塑料浮球-警示PE浮筒-宁波君益塑业有限公司 | CCC验厂-家用电器|服务器CCC认证咨询-奥测世纪 | 机器视觉检测系统-视觉检测系统-机器视觉系统-ccd检测系统-视觉控制器-视控一体机 -海克易邦 | 转向助力泵/水泵/发电机皮带轮生产厂家-锦州华一精工有限公司 | 冷却塔厂家_冷却塔维修_冷却塔改造_凉水塔配件填料公司- 广东康明节能空调有限公司 | 盘式曝气器-微孔曝气器-管式曝气器-曝气盘-斜管填料 | 郑州市前程水处理有限公司 | 高效节能电机_伺服主轴电机_铜转子电机_交流感应伺服电机_图片_型号_江苏智马科技有限公司 | 真石漆,山东真石漆,真石漆厂家,真石漆价格-山东新佳涂料有限公司 | 广州中央空调回收,二手中央空调回收,旧空调回收,制冷设备回收,冷气机组回收公司-广州益夫制冷设备回收公司 | PC构件-PC预制构件-构件设计-建筑预制构件-PC构件厂-锦萧新材料科技(浙江)股份有限公司 | 招商帮-一站式网络营销服务|互联网整合营销|网络推广代运营|信息流推广|招商帮企业招商好帮手|搜索营销推广|短视视频营销推广 | 恒温槽_恒温水槽_恒温水浴槽-上海方瑞仪器有限公司 | 上海APP开发-APP制作-APP定制开发-上海APP开发制作公司-咏熠科技 | 团建-拓展-拓展培训-拓展训练-户外拓展训练基地[无锡劲途] | 体感VRAR全息沉浸式3D投影多媒体展厅展会游戏互动-万展互动 | 智能楼宇-楼宇自控系统-楼宇智能化-楼宇自动化-三水智能化 | 热工多功能信号校验仪-热电阻热电偶校验仿真仪-金湖虹润仪表 | 医用酒精_84消毒液_碘伏消毒液等医用消毒液-漓峰消毒官网 | 武汉印刷厂-不干胶标签印刷厂-武汉不干胶印刷-武汉标签印刷厂-武汉标签制作 - 善进特种标签印刷厂 | 危废处理系统,水泥厂DCS集散控制系统,石灰窑设备自动化控制系统-淄博正展工控设备 | 浙江红酒库-冰雕库-气调库-茶叶库安装-医药疫苗冷库-食品物流恒温恒湿车间-杭州领顺实业有限公司 |