一个计算机技术爱好者与学习者

0%

使用Docker安装配置MySQL

1. 前言

《CentOS7设置mysql开机自启动》《CentOS安装多版本MySQL》中都涉及了Mysql的安装方法,本文中会提供一个更好的Mysql安装方法。

前置条件是安装配置好了docker环境,安装方法参考《Docker入门》。已知docker宿主机IP为192.168.56.130。

2. 安装MySQL

2.1. 安装MySQL5.7.x

1、登录dockerhub查看需要的mysql版本

2、下载mysql镜像(以mysql5.7.28为例)

1
docker pull mysql:5.7.28

3、启动mysql服务

1
2
3
4
5
docker run --name vk-mysql -d \
-p 3306:3306 \
-v /opt/data/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=voidking \
mysql:5.7.28

以上命令:

  • 命名容器为vk-mysql,后台运行
  • 映射宿主机3306端口到容器3306端口
  • 映射宿主机/opt/data/mysql目录(不需要提前创建目录)到容器/var/lib/mysql,用于存储mysql数据到宿主机
  • 设置数据库密码为voidking

更高级的启动命令参考How to use this image

4、验证安装
docker ps
mysql启动正常的话就可以看到vk-mysql容器。
如果启动失败,可以使用docker logs vk-mysql查看失败原因并进行解决。

2.2. 安装MySQL8.0.x

参考文档:

1、登录dockerhub查看需要的mysql版本

2、下载mysql镜像(以mysql8.0.28为例)

1
docker pull mysql:8.0.28

3、启动mysql服务

1
2
3
4
5
6
7
8
docker run --name vk-mysql -d \
-p 3306:3306 \
-v /opt/mysql/mysql-files:/var/lib/mysql-files \
-v /opt/mysql/conf.d:/etc/mysql/conf.d \
-v /opt/mysql/data:/var/lib/mysql \
-v /opt/mysql/log:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=voidking \
mysql:8.0.28

以上命令:

  • 命名容器为vk-mysql,后台运行
  • 映射宿主机3306端口到容器3306端口
  • 映射宿主机/opt/mysql目录下的子目录到容器目录,用于存储mysql数据到宿主机
  • 设置数据库密码为voidking

更高级的启动命令参考How to use this image

4、验证安装
docker ps
mysql启动正常的话就可以看到vk-mysql容器。
如果启动失败,可以使用docker logs vk-mysql查看失败原因并进行解决。

默认配置文件为/etc/my.cnf,会引用/etc/mysql/conf.d/目录中的以cnf结尾配置文件,例如custom.cnf

1
2
3
[mysqld]
general_log_file=/var/log/mysql/mysql.log
general_log = 1

上面的配置,会开启sql日志。

3. 测试访问

3.1. 容器内访问

1
2
docker exec -it vk-mysql /bin/bash
mysql -uroot -p

3.2. 宿主机上访问

centos7上访问mysql server5.7.x

1
2
yum install -y mariadb.x86_64 mariadb-libs.x86_64
mysql -h 127.0.0.1 -uroot -p

centos7上访问mysql server8.0.x

1
2
3
4
5
6
7
8
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
curl -L https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 -o /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
rpm -ivh mysql80-community-release-el7-3.noarch.rpm # 安装repo源
yum makecache
yum list | grep mysql
yum list mysql-community-client --showduplicates | sort -r
yum install mysql-community-client-8.0.28-1.el7.x86_64 --setopt=protected_multilib=false

ubuntu18上访问mysql server5.7.x

1
2
3
#apt install mysql-client-core-8.0
apt install mysql-client-core-5.7
mysql -h 127.0.0.1 -uroot -p

4. 开放访问

1、开放端口

1
2
3
4
5
6
7
8
# centos
firewall-cmd --add-port=3306/tcp --permanent
systemctl reload firewalld
# 或者
systemctl stop firewalld

# ubuntu18
ufw allow 3306

2、安装mysql-client,方法同上

3、访问mysql-server

1
mysql -h 192.168.56.130 -P 3306 -u root -p

输入密码,即可连接到vk-mysql容器服务。