使用Docker 部署 Mysql

1、在CentOS安装Docker

1.1 安装

  • 安装Docker的依赖包 sudo yum install -y yum-utils
  • 设置Docker的稳定仓库(阿里仓库) yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 安装 Docker CE 和 CLI yum install docker-ce docker-ce-cli containerd.io
  • 启动 Docker 并设置开机自启systemctl start docker *** systemctl enable docker

1.2 查看docker和docker compose版本

docker --version
docker compose version

2、创建Docker配置

2.1 在用户目录下创建 docker-compose.yml 文件

version: '3'
services:
  mysql:
    restart: always
	privileged: true
    image: mysql:5.7
    container_name: mysql5.7
    volumes:
      - ./db:/var/lib/mysql
      - ./conf:/etc/mysql/conf.d
      - ./logs:/var/logs
	  - ./mysql-files:/var/lib/mysql-files
    command:
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
    environment:
      MYSQL_ROOT_PASSWORD: "12345678"
	ports:
      - 3306:3306
    network_mode: "bridge"

2.2 初始化MySQL映射目录

mkdir -p /data/mysql
cd /data/mysql

mkdir db
mkdir conf
mkdir logs

2.3 创建MYSQL配置文件

###### [mysql]配置模块 ######
[mysql]
# 设置MySQL客户端默认字符集
default-character-set=utf8mb4

###### [mysqld]配置模块 ######
[mysqld]
port=3306
user=mysql

# sql_mode 是 MySQL 的一个系统变量,它控制了 MySQL 在执行 SQL 语句时的行为。
# STRICT_TRANS_TABLES:启用严格模式,当插入或更新数据时,MySQL 将拒绝任何不符合数据类型的数据。
# NO_ZERO_IN_DATE:当日期或日期时间字段中的值为 "0000-00-00" 时,MySQL 将抛出警告或错误。
# NO_ZERO_DATE:当日期或日期时间字段中的值为 "0000-00-00" 或 "0000-00-00 00:00:00" 时,MySQL 将抛出警告或错误。
# ERROR_FOR_DIVISION_BY_ZERO:当除数为零时,MySQL 将抛出错误。
# NO_ENGINE_SUBSTITUTION:当请求的存储引擎不可用时,MySQL 将抛出错误,而不是自动使用另一个可用的存储引擎。
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

# MySQL8 的密码认证插件
default_authentication_plugin=mysql_native_password

# 禁用符号链接以防止各种安全风险
symbolic-links=0

# 允许最大连接数
max_connections=1000

# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

# 表名存储在磁盘是小写的,但是比较的时候是不区分大小写
lower_case_table_names=1
max_allowed_packet=16M 

# 设置时区(按照实际情况填写)
default-time_zone='+0:00'

# binlog 配置
expire-logs-days = 90
max-binlog-size = 500M

# server-id 配置
server-id = 1

###### [client]配置模块 ######
[client]
default-character-set=utf8mb4
# 在测试目录中在后台执行该服务可以加上 -d 参数:
docker compose up -d
# 如果遇到如下类似的问题
error pulling image configuration: download failed after attempts=6: dial tcp xxxxxx:443: i/o timeout
error pulling image configuration: download failed after attempts=6: dial tcp 67.230.169.182:443: connect: connection refused

# 解决办法
vim /etc/docker/daemon.json
# 编辑如下内容
{
    "registry-mirrors": [
        "https://docker.m.daocloud.io",
        "https://dockerproxy.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.nju.edu.cn"
    ]
}

# 最后重启
systemctl daemon-reload
systemctl restart docker

参考文献:https://blog.csdn.net/qq_43090226/article/details/131634119

使用Docker部署MySQL是一个非常常见的操作,它允许开发者在容器化的环境中快速启动和管理MySQL数据库实例。以下是使用Docker部署MySQL的基本步骤: 1. 安装Docker:确保你的系统上已经安装了Docker。如果没有安装,可以从Docker官网下载并安装适合你操作系统的Docker版本。 2. 拉取MySQL镜像:打开终端或命令提示符,输入以下命令以从Docker Hub拉取官方MySQL镜像(以MySQL 5.7为例): ``` docker pull mysql:5.7 ``` 3. 运行MySQL容器使用以下命令来启动一个MySQL容器实例: ``` docker run --name mysql-server -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:5.7 ``` 这里`--name`指定了容器的名称,`-e`用于设置环境变量,这里是设置MySQL root用户的密码,`-d`表示后台运行容器。请记得替换`my-secret-pw`为你的实际密码。 4. 验证MySQL运行状态:可以通过以下命令来检查MySQL容器是否正在运行: ``` docker ps ``` 如果一切顺利,你应该能看到一个名为`mysql-server`的容器正在运行。 5. 连接到MySQL数据库:可以使用MySQL命令行工具或任何支持MySQL的客户端来连接到运行中的容器。例如,使用命令行工具连接到MySQL数据库可以使用以下命令: ``` docker exec -it mysql-server mysql -u root -p ``` 系统会提示你输入密码,输入你在启动容器时设置的密码即可登录MySQL。 6. 数据持久化(可选):为了防止数据丢失,你可能需要将MySQL的数据保存在宿主机的磁盘上。可以通过使用`-v`参数来挂载一个卷,将容器内的数据目录映射到宿主机的文件夹。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值