Docker安装Mysql

安装

1、拉取镜像(这里使用5.7.22版本)

docker pull mysql:5.7.22

2、启动

# 创建了一个名为myMysql的MySQL数据库服务器容器实例
docker run --name myMysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.22

命令说明:

  • -p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口
  • -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码

其他命令

  • 访问容器
docker exec -it myMysql bash

进入容器内部,我们就可以登录到mysql了

[root@iZbp1b5k5bjps0dw8owk7tZ ~]# docker exec -it myMysql bash
root@ef155a347409:/# ls             
bin   docker-entrypoint-initdb.d  home   media  proc  sbin  tmp
boot  entrypoint.sh       lib    mnt    root  srv   usr
dev   etc             lib64  opt    run   sys   var
root@ef155a347409:/# 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.22 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 badatases;
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 'badatases' at line 1
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql> 
  • 查看日志
docker logs -f myMysql
  • 进入终端
docker exec -it myMysql mysql -uroot -p123456
  • 使用自定义MySQL配置文件

默认情况下,MySQL的启动配置文件是/etc/mysql/my.cnf,而/etc/mysql/conf.d目录下的存在任何.cnf格式的文件时,都会使用该文件中配置项替换默认配置。
因此,如果要使用自定义配置,可以在宿主机创建一个配置文件,然后在创建容器时通过-v参数,以数据卷的方式将自定义配置挂载到mysql容器的/etc/mysql/conf.d目录下。

例:

docker run --name myMysql -p 3306:3306 -v /usr/local/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.22

以上示例会启动一个名为myMysql的MySQL服务器容器,该文件启动时会同时使用/usr/local/mysql/conf/my.cnf中的配置

注:如果使用到mysql主从配置,那么在mysql 5.7版本中不要使用挂载配置文件的方式,可以采用宿主机拷贝替换容器中的/etc/mysql/my.cnf文件,因为博主发现挂载配置文件开启log-bin没有生效,在这块遇到了坑,如果谁有更好的方法可以给博主留言

  • 数据存储
在使用mysql镜像创建MySQL容器时,数据库数据存储可能会有以下两种方式:

1).数据卷容器:使用Docker默认的数据管理方式来管理数据库的数据存储,在这种方式下,数据库文件会被写入数据库的内部。这种方式对于用户非常简单,缺点是很在宿主机上找到所存储的数据。

2).外部数据卷:在宿主机创建一个数据目录,再将数据目录挂载到容器内部。这种方式可以很方便的在宿主机上找到并进行数据管理,但需要确保数据目录的存在。

当使用外部数据卷时,例:

docker run --name myMysql -p 3306:3306 -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.22

表示将宿主机的/usr/local/mysql/data目录挂载到容器内的/var/lib/mysql目录

  • 日志存储

同理,我们也可以将日志挂载到宿主机上,例:

docker run --name myMysql -p 3306:3306 -v /usr/local/mysql/log:/var/log/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.22

表示将宿主机的/usr/local/mysql/log目录挂载到容器内的/var/log/mysql目录

那么总结起来同时挂载配置、数据卷、日志的命令为:

docker run --name myMysql -p 3306:3306 -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /usr/local/mysql/log:/var/log/mysql -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.22
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值