Docker 如何部署mysql 5.7

环境

docker Version: 18.06.3-ce
mysql 5.7

问题描述:

Docker 如何部署mysql 5.7

解决方案:

1.搜索docker hub上的mysql镜像

docker search mysql

[root@localhost ~]# docker search mysql
NAME                             DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mysql                            MySQL is a widely used, open-source relation…   12338               [OK]                
mariadb                          MariaDB Server is a high performing open sou…   4746                [OK]                
mysql/mysql-server               Optimized MySQL Server Docker images. Create…   916                                     [OK]
percona                          Percona Server is a fork of the MySQL relati…   572                 [OK]                
phpmyadmin                       phpMyAdmin - A web interface for MySQL and M…   488                 [OK]                
mysql/mysql-cluster              Experimental MySQL Cluster Docker images. Cr…   93                                      
centos/mysql-57-centos7          MySQL 5.7 SQL database server                   92                                      
bitnami/mysql                    Bitnami MySQL Docker Image                      67                                      [OK]
ubuntu/mysql                     MySQL open source fast, stable, multi-thread…   28                                      
circleci/mysql                   MySQL is a widely used, open-source relation…   25                                      
mysql/mysql-router               MySQL Router provides transparent routing be…   23                                      
centos/mysql-56-centos7          MySQL 5.6 SQL database server                   22                                      
google/mysql                     MySQL server for Google Compute Engine          21                                      [OK]
vmware/harbor-db                 Mysql container for Harbor                      10                                      
mysqlboy/docker-mydumper         docker-mydumper containerizes MySQL logical …   3                                       
mysqlboy/mydumper                mydumper for mysql logcial backups              3                                       
bitnami/mysqld-exporter                                                          2                                       
ibmcom/mysql-s390x               Docker image for mysql-s390x                    1                                       
ibmcom/tidb-ppc64le              TiDB is a distributed NewSQL database compat…   0                                       
mirantis/mysql                                                                   0                                       
mysqlboy/elasticsearch                                                           0                                       
mysqleatmydata/mysql-eatmydata                                                   0                                       
cimg/mysql                                                                       0                                       
mysql/mysql-operator             MySQL Operator for Kubernetes                   0                                       
mysql/ndb-operator               MySQL NDB Operator for Kubernetes               0                            

2.下载镜像mysql5.7

docker pull mysql:5.7

[root@localhost ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
f003217c5aae: Pull complete 
65d94f01a09f: Pull complete 
43d78aaa6078: Pull complete 
a0f91ffbdf69: Pull complete 
59ee9e07e12f: Pull complete 
04d82978082c: Pull complete 
70f46ebb971a: Pull complete 
ba61822c65c2: Pull complete 
dec59acdf78a: Pull complete 
0a05235a6981: Pull complete 
c87d621d6916: Pull complete 
Digest: sha256:1a73b6a8f507639a8f91ed01ace28965f4f74bb62a9d9b9e7378d5f07fab79dc
Status: Downloaded newer image for mysql:5.7

3.准备部署

本地系统创建部署目录,进入部署目录
创建conf,data,logs目录分别用来存放mysql配置,mysql数据,mysql日志

mkdir conf
mkdir data
mkdir logs

批量创建

[root@localhost srv]# mkdir conf data logs

更改3个文件夹权限

chmod 777 logs
chmod 777 data
chmod 777 conf

进入conf目录,写入mysql配置如下

[root@localhost srv]# cd conf
[root@localhost conf]# touch my.cnf
[root@localhost conf]# vim my.cnf

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
character_set_server=utf8
init_connect='SET NAMES utf8

4.创建并启动镜像

退出conf目录,使用如下命令创建并启动mysql容器。

[root@w srv]# docker run -itd --name="mysql" -p3307:3306 -v$PWD/conf/:/etc/mysql/conf.d -v$PWD/data:/var/lib/mysql -v$PWD/logs:/var/log -eMYSQL_ROOT_PASSWORD="mys1223"  mysql:5.7

其中命令各部分的意义分别是:

docker run:创建并启动应用
-i:开启容器的标准输入STDIN
-t:容器分配伪终端,用于再终端登录容器
-d:后台运行容器
--name:容器名称
-p3307:3306:打开容器的3306端口并且映射到本机的3307端口
-v$PWD/conf/:/etc/mysql/conf.d,挂载($PWD)当前目录下的conf目录到容器的/etc/mysql/conf.d目录
v$PWD/data:/var/lib/mysql,挂载($PWD)当前目录下的data目录到容器的/var/lib/mysql目录
 -v$PWD/logs:/var/log,挂载($PWD)当前目录下的logs目录到容器的/var/log/目录
-eMYSQL_ROOT_PASSWORD="mysql",增加环境变量MYSQL_ROOT_PASSWORD,mysql容器创建并启动时,设置mysql的登录密码
mysql:5.7,要创建并启动容器的mysql镜像

命令执行后

083041526b249f02c79bef77dcdf4ae42110fdfad3fdf1624e0334cfcf4606aa

查看容器信息

[root@localhost srv]# docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
848a2581da80        mysql:5.7           "docker-entrypoint.s…"   7 minutes ago       Up 3 seconds        33060/tcp, 0.0.0.0:3307->3306/tcp   mysql

5.测试

进入容器终端测试mysql,并进行远程登录权限管理

[root@localhost srv]# docker exec -it 848a2581da80 /bin/bash

执行mysql -uroot -p命令后输入启动容器时设置的mysql密码,我的密码是mysql,连接mysql数据库成功。

mysql远程登录权限管理

root@848a2581da80:/# mysql -uroot -p           
Enter password: 之前设置的密码
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.37 MySQL Community Server (GPL)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

mysql> grant all privileges on *.* to 'root'@'%' identified by 'mys1223' 命令
    -> ;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;                                  命令
Query OK, 0 rows affected (0.00 sec)

mysql> exit 退出

退出mysql客户端,查看容器的ip地址

root@848a2581da80:/# cat /etc/hosts
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
172.17.0.2	848a2581da80

Ctrl+P+Q退出容器

通过 docker container inspect命令查看容器的详细信息

docker container inspect 848a2581da80 | grep IP

[root@localhost srv]# docker container inspect 848a2581da80 | grep IP
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.2",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
                    "IPAMConfig": null,
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,

查看data文件夹

[root@localhost srv]# ls data
auto.cnf    ca.pem           client-key.pem  ibdata1      ib_logfile1  mysql               private_key.pem  server-cert.pem  sys
ca-key.pem  client-cert.pem  ib_buffer_pool  ib_logfile0  ibtmp1       performance_schema  public_key.pem   server-key.pem

6.Navicat 测试连接
在这里插入图片描述
7.完成

1、重启容器

docker restart mysql

2、查看MySQL日志

docker logs mysql

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玩人工智能的辣条哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值