docker部署mysql并且自动启动(Docker 部署 Mysql8.0的方法示例)
docker部署mysql并且自动启动
Docker 部署 Mysql8.0的方法示例1. 参照官网,安装docker
2.拉取mysql镜像 (默认拉取最新的镜像)8.0.11
docker pull mysql
3.在宿主机创建持久化 mysql data 及mysql.cnf
mkdir /usr/local/mysqlData/test/cnf mkdir /usr/local/mysqlData/test/data vi /usr/loal/mysqlData/test/cnf/mysql.cnf
设置本地文件共享:
Docker -> Preferences... -> File Sharing
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
运行结果:
6. 进入test_mysql 容器
Docker exec -it test_mysql bash
如图:
7.在容器内登录mysql
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,如图:
12.建库、建表、加数据
查看挂载本地数据盘的内容:
13. 测试将容器移除后,数据是否仍然存在
docker rm -f test_msyql
容器已经移除了。重新部署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 mysql 65b7a60050aaef5765ed055acfd071c7c76f60e85dc25d0e73e0d56eae14aed1 xushijiandeiMac:data xushijian$ docker exec -it test_mysql bash root@65b7a60050aa:/# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.11 MySQL Community Server - GPL Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. 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 names You can turn off this feature to get a quicker startup with -A Database changed mysql> 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 ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8597b7539a3a mysql:latest "docker-entrypoint..." 3 minutes ago Up 3 minutes 0.0.0.0:3307->3306/tcp mysql_master_1
<3.进入容器,进行权限设置,后续过程参照本机
[root@c13a6d832fd0a49398c62002361d75c60-node1 /]# docker exec -it mysql_master_1 bash root@2fc0bbf48941-mysql-master-1:/# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.11 MySQL Community Server - GPL Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
<4. 开放3307端口,使得外网可以访问
云服务器ECS -> 安全组 -> 选择所在的地区 ->配置规则 -> 添加安全组
添加安全组,如图:
5.外网访问,如下图
已连接成功。
主从环境搭建:
主库:
[root@c13a6d832fd0a49398c62002361d75c60-node1 ~]# docker exec -it mysql_master_1 bash root@2fc0bbf48941-mysql-master-1:/# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 8.0.11 MySQL Community Server - GPL Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. 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 1 mysql> 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 bash root@c8661e16e3fd-mysql-slave-slave-1:/# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 10 Server version: 8.0.11 MySQL Community Server - GPL Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. 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 status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event 主从配置成功! Master_Host: 47.94.225.124 Master_User: rep Master_Port: 3307 Connect_Retry: 60 Master_Log_File: binlog.000003 Read_Master_Log_Pos: 155 Relay_Log_File: c8661e16e3fd-mysql-slave-slave-1-relay-bin.000004 Relay_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: None Until_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: 0 Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_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: 0 1 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 1 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | | test | +--------------------+ 5 rows in set (0.00 sec)
主从库原理分析:
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内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
- docker 部署参数配置(Docker搭建Redis5.0并挂载数据)
- docker常用操作(docker常用命令汇总)
- docker配置说明(Docker安装Kong API Gateway并使用的详细教程)
- docker容器里面有java运行环境吗(利用 Docker 构建简单的 java 开发编译环境的方法详解)
- docker 查看目录映射(docker 文件存放路径, 修改端口映射操作方式)
- dockerhub镜像排行(DockerHub 镜像仓库的使用详解)
- docker重启报错(Docker启动为Exited状态)
- docker删除多个镜像命令(Docker 彻底删除私有库镜像的操作)
- docker中mysql连接命令(docker 如何修改mysql的root密码)
- docker阿里云服务器教程(Docker安装阿里云服务器和在虚拟机安装遇到的坑问题小结)
- idea 远程部署docker(IDEA使用Docker插件菜鸟教程)
- linux搭建nacos(docker搭建nacos1.3.0的实现)
- docker容器设置端口(Docker 实现容器端口绑定本地端口)
- docker和容器有什么区别(聊聊docker中容器与镜像的区别)
- kalilinux安装到u盘教程学习(kali安装docker和portainer的配置方法)
- docker查看某个容器状态(docker 移除掉运行不正常的container操作)
- 以家人之名广受好评,剧情生动引起观众共鸣,演员张新成圈粉无数(以家人之名广受好评)
- 三兄妹感情再遇波折,人设接连崩塌 《以家人之名》剧情猜不透(三兄妹感情再遇波折)
- 《小敏家》金波想要复婚 这只是他圈套的第1步,更可恶的在后面(小敏家金波想要复婚)
- 小敏家 剧情离谱一锅乱炖,但他们俩绝对是这部剧的一大 亮点(剧情离谱一锅乱炖)
- 《倚天屠龙记》再遭翻拍,关晓彤主演赵敏,蒋劲夫演张无忌,你怎么看(倚天屠龙记再遭翻拍)
- 吴启华与曾舜晞两代张无忌同框,戏里经典的他却没活出原著的潇洒(吴启华与曾舜晞两代张无忌同框)
热门推荐
- xampp数据库表在哪个文件夹(XAMPP集成环境中MySQL数据库的使用)
- html5的canvas代码(H5最强接口之canvas实现动态图形功能)
- 织梦列表页调用文章简介不显示(织梦文章系统修改专题文章列表的模板的方法)
- apache安全配置(apache在win2003下的安全设置配合文件夹权限目录,很好很安全)
- 小程序数字化怎么布局(用position:sticky完美解决小程序吸顶问题的实现方法)
- 安装了nginx怎么启动(windows下快速安装nginx并配置开机自启动的方法)
- mysql首次登录不上怎么办(Mysql匿名登录无法创建数据库问题解决方案)
- sql查询数据库前五条信息(SQL查询数据库中符合条件的记录的总数)
- 云主机和云虚拟主机有什么区别(什么是云主机?云主机是独立空间吗?)
- python3html怎么转换成pdf(Python实现html转换为pdf报告生成pdf报告功能示例)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9