Docker部署Mysql

Docker部署Mysql

一、概要

此文档用于帮助开发人员快速了解 Docker 部署 MySQL 数据库的过程,并为他们提供一个指导性的指南,目前Mysql数据库使用版本为8.0。

二、安装Docker

三、部署Mysql数据库

方法一:使用脚本部署

1、新建docker-compose.yml文件

在文件中粘贴以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
version: '3'

volumes:
mysql_server_db:

services:
mysql_server:
image: mysql:8.0 //mysql数据库版本
restart: always //Docker守护程序将在容器退出时自动重新启动它,无论容器是由于发生错误还是由于手动停止。
ports:
- 3306:3306 //数据库映射端口
environment:
MYSQL_ROOT_PASSWORD: 123456 //数据库密码
volumes:
- mysql_server_db:/var/lib/mysql //mysql数据库目录映射到数据卷
command:
--local-infile=1 //修改数据库配置

2.使用文件传输工具将docker-compose.yml文件上传到服务器

3.执行docker-compose.yml文件

到docker-compose.yml文件下执行命令

1
2
//启动容器
docker-compose up

4.连接数据库

使用MySql客户端连接,若连接成功则表示部署完成。

ic5ab26hd.webp

方法二:手动部署

1.打开终端,使用以下命令拉取 MySQL 8.0 镜像:

1
docker pull mysql:8.0

2.使用以下命令在 Docker 中启动一个 MySQL 容器,并将其命名为 “my-mysql”:

1
docker run --name my-mysql -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=your_password -p 3306:3306 -d mysql:8.0
  • -name指定了你要取的名字。
  • p对应,需要映射出来的端口。比如:3306:3306,意识表示为my-mysql的容器里面的3306端口对应我外面这个虚拟机的3306端口。
  • e是mysql的命令,设置root的密码为123456
  • d是运行的镜像,这里是mysql 容器镜像
  • v : 指定数据卷,意思就是将mysql容器中的/var/lib/mysql(这个是数据库所有数据信息文件)映射到宿主机/data/mysql里面。(参考文档——使用Docker快速搭建Mysql,并进行数据卷分离

3.检查容器是否正在运行:

1
docker ps

如果你看到了一个名为 “my-mysql” 的容器正在运行,说明 MySQL 已经成功部署。

4.进入Mysql

现在你可以通过 MySQL 客户端连接到这个容器,执行 SQL 命令,管理数据库了。例如,使用以下命令连接到容器:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
root@ubuntudoc:~# docker exec -it my-mysql bash
### 下述代表容器里面的情况了
root@3958ab15ea05:/# df -h
Filesystem Size Used Avail Use% Mounted on
overlay 53G 3.7G 47G 8% /
tmpfs 64M 0 64M 0% /dev
tmpfs 1000M 0 1000M 0% /sys/fs/cgroup
/dev/dm-0 53G 3.7G 47G 8% /etc/hosts
shm 64M 0 64M 0% /dev/shm
tmpfs 1000M 0 1000M 0% /proc/acpi
tmpfs 1000M 0 1000M 0% /proc/scsi
tmpfs 1000M 0 1000M 0% /sys/firmware

root@3958ab15ea05:/# mysql -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.19 MySQL Community Server -

GPL

Copyright (c) 2000, 2020, 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>

使用MySql客户端连接,若连接成功则表示部署完成。

1lbul6y3kg

四、注意

1、修改数据库配置

在数据库执行以下命令:

1
2
3
//查看配置,若为OFF则执行下一步
show global variables like 'local_infile'
//可将OFF改为ONset global local_infile=1;

修改成功显示:

175eubpra1

必须修改,否则会在批量操作的时候(例如排产派工)时会抛出错误【loading local data is disabled; this must be enabled on both the client and server sides】,且在连接字符串中要加上AllowLoadLocalInfile=true。

1
2
"Default": "Server=192.168.2.41;Port=3307;Database=MySqlDb;Uid=root;Pwd=123456;charset=utf8;TreatTinyAsBoolean=false;AllowLoadLocalInfile=true", 
"DatabaseType": "mysql"