docker安装mysql


一、配置Docker镜像

毫秒镜像:https://1ms.run/

/etc/docker添加文件daemon.json

daemon.json文件内容为:

Markup 全选
{
  "registry-mirrors": ["https://docker.1ms.run"]
}

重启

Markup 全选
systemctl daemon-reload
systemctl restart docker

二、mysql 5.5

2.1 拉取镜像

Markup 全选
docker pull mysql:5.5

2.2 宿主目录创建

宿主新建目录 /opt/mysql_5.5

新建文件 /opt/mysql_5.5/conf/my.cnf

my.conf文件内容:

Markup 全选
[client]
#设置客户端默认字符集utf8mb4 
default-character-set=utf8mb4
[mysql]
#设置服务器默认字符集为utf8mb4
default-character-set=utf8mb4
[mysqld]
#配置服务器的服务号,具备日后需要集群做准备
server-id = 1
#数据库文件存放位置
datadir = /var/lib/mysql
#错误日志:MySQL默认会开启错误日志,记录严重的问题和错误。你可以设置log_error选项来指定错误日志文件的路径和名称
#log_error = /var/log/mysql/error.log
#开启MySQL数据库的二进制日志,用于记录用户对数据库的操作SQL语句,具备日后需要集群做准备
#log_bin = /var/log/mysql/mysql-bin.log
#慢查询日志:要开启慢查询日志 需要设置slow_query_log选项为1,并设置slow_query_log_file选项来指定日志文件的路径和名称。你还可以设置long_query_time选项来定义查询执行多久才被认为是“慢”的
#slow_query_log = 1
#long_query_time = 1 #慢查询时间 超过1秒则为慢查询
#slow_query_log_file = /data/mysql/mysql-slow.log

#设置清理超过30天的日志,以免日志堆积造过多成服务器内存爆满。2592000秒等于30天的秒数
# binlog_expire_logs_seconds = 2592000
#解决MySQL8.0版本GROUP BY问题
# sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
#允许最大的连接数
max_connections=1000
#禁用符号链接以防止各种安全风险
symbolic-links=0
# 设置东八区时区
default-time_zone = '+8:00'

AI优化后的设置

Markup 全选
# ================================
# MySQL 5.5 推荐配置模板
# ================================

[client]
# 客户端默认字符集
default-character-set=utf8mb4

[mysql]
# mysql 命令行工具默认字符集
default-character-set=utf8mb4

[mysqld]
##########################
# 基本配置
##########################
server-id = 1                     # 唯一服务ID,用于复制
datadir = /var/lib/mysql           # 数据存放路径
socket = /var/lib/mysql/mysql.sock # socket 文件

##########################
# 字符集设置
##########################
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci

##########################
# 网络 & 连接
##########################
max_connections = 500             # 最大连接数,根据服务器内存调整
skip-name-resolve = 1             # 禁用 DNS 解析,加快连接速度

##########################
# 安全性
##########################
symbolic-links=0                  # 禁用符号链接,防止安全风险

##########################
# 日志配置
##########################
# 错误日志
log_error = /var/log/mysql/error.log

# 慢查询日志
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 1               # 超过1秒认为慢查询

# 二进制日志(复制/集群用)
# log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 30             # 自动清理超过30天的binlog

##########################
# SQL模式
##########################
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

##########################
# 性能调优(可根据内存调整)
##########################
table_open_cache = 400
key_buffer_size = 128M
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 1M
join_buffer_size = 1M
thread_cache_size = 8
query_cache_size = 64M
query_cache_type = 1

##########################
# 时区
##########################
default-time_zone = '+8:00'

##########################
# 其他可选
##########################
# max_allowed_packet = 64M
# tmp_table_size = 32M
# innodb_buffer_pool_size = 512M  # InnoDB表性能优化

2.3 启动容器

容器启动命令

Markup 全选
docker run -p 33061:3306 --restart=always --name mysql_5.5 --privileged=true -v /opt/mysql_5.5/log:/var/log/mysql -v /opt/mysql_5.5/data:/var/lib/mysql -v /opt/mysql_5.5/conf/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=abc@1230 -d mysql:5.5

docker-compose.yml文件启动方式

Markup 全选
version: '2'
services:
    db:
      image: mysql:5.5
      restart: always
      container_name: mysql_5.5
      ports:
        - "33061:3306"
      environment:
        MYSQL_DATABASE: database
        MYSQL_ROOT_PASSWORD: abc@1230
      volumes:
        - /data/mysql_5.5/log:/var/log/mysql
        - /data/mysql_5.5/data:/var/lib/mysql
        - /data/mysql_5.5/conf/my.cnf:/etc/mysql/my.cnf

启动命令

Markup 全选
docker-compose -f /root/docker-compose-mysql.yml up -d

参数说明

-p表示端口映射

--restart=always表示容器退出时总是重启

--name表示容器命名

--privileged=true表示赋予容器权限修改宿主文件权利

-v /opt/mysql_5.5/log:/var/log/mysql表示容器日志挂载到宿主机

-v /opt/mysql_5.5/data:/var/lib/mysql表示容器存储文件挂载到宿主机

-v /opt/mysql_5.5/conf/my.cnf:/etc/mysql/my.cnf表示容器配置文件挂载到宿主机

-e MYSQL_ROOT_PASSWORD=abc@1230表示设置mysql的root用户密码,建议用强密码

-d表示后台运行

mysql:5.5表示镜像名称

 

MySQL8.0

my.cnf文件内容

Markup 全选
[mysqld]
# 设置端口
port=3306

# MySQL 安装目录(容器里是这个)
basedir=/usr

# 数据文件目录
datadir=/var/lib/mysql

# 允许最大连接数
max_connections=200

# 防暴力连接
max_connect_errors=10

# 字符集
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci

# 默认存储引擎
default-storage-engine=INNODB

# 认证插件
default_authentication_plugin=mysql_native_password

[mysql]
default-character-set=utf8mb4

[client]
port=3306
default-character-set=utf8mb4

docker-compose.yml文件内容

Markup 全选
version: '2'
services:
    db:
      image: mysql:8.0
      restart: always
      container_name: mysql_8.0
      ports:
        - "33062:3306"
      environment:
        MYSQL_DATABASE: database
        MYSQL_ROOT_PASSWORD: abc@1230
      volumes:
        - /data/mysql_8.0/log:/var/log/mysql
        - /data/mysql_8.0/data:/var/lib/mysql
        - /data/mysql_8.0/conf/my.cnf:/etc/mysql/my.cnf

 

 

拉取镜像

docker pull mysql:8.7

docker pull mysql:5.7

docker pull mysql:5.5

mysql5.5启动

 

docker run -p 33061:3306 --restart=always --name mysql_5.5 --privileged=true -v /opt/mysql_5.5/log:/var/log/mysql -v /opt/mysql_5.5/data:/usr/local/mysql/data -v /opt/mysql_5.5/conf/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=abc@1230 -d mysql:5.5

my.cnf文件内容

Markup 全选
[client]
#设置客户端默认字符集utf8mb4
default-character-set=utf8mb4
[mysql]
#设置服务器默认字符集为utf8mb4
default-character-set=utf8mb4
[mysqld]
#配置服务器的服务号,具备日后需要集群做准备
server-id = 1
#开启MySQL数据库的二进制日志,用于记录用户对数据库的操作SQL语句,具备日后需要集群做准备
# log-bin=mysql-bin
#设置清理超过30天的日志,以免日志堆积造过多成服务器内存爆满。2592000秒等于30天的秒数
# binlog_expire_logs_seconds = 2592000
#解决MySQL8.0版本GROUP BY问题
# sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
#允许最大的连接数
max_connections=1000
# 禁用符号链接以防止各种安全风险
# symbolic-links=0
# 设置东八区时区
default-time_zone = '+8:00'

 

其他

进入容器

Markup 全选
docker exec -u root -it <容器名称> bin/bash

查看数据库位置

Markup 全选
SHOW VARIABLES LIKE 'datadir';
版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
张国生
上一篇:Docker安装SQLServer2019
下一篇:LInux修改终端颜色
评论列表

发表评论

评论内容
昵称:
关联文章

docker安装mysql
mysql安装
CentOS7安装Docker
Docker安装JIRA 7.2.2
suse docker容器安装
MySQL 8.0 绿色版安装
CentOS Docker安装gitlab
Rocky Linux10 安装Docker环境
Docker安装SQLServer2019
Docker安装Jira 10.7.3
Docker安装Redis
docker安装zookeeper
CentOS Docker安装gitea
你通过 docker-compose.yml 启动了 MySQL 容器后,更改了 .yml 中的默认密码,但执行 docker-compose up -d 后发现并没有生效
Docker安装SqlServer后数据库备份错误
GZDBHelper连接MySQL数据库
CentOS 7 安装 docker compose 教程
docker安装gitlab root密码重置
C# .net项目Docker方式部署
Docker 私有镜像仓库 一:Docker Registry

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码