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'

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]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/var/lib/mysql  
# 设置mysql数据库的数据的存放目录
datadir/var/lib/mysql/Data  
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8

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: Zhuoyu@2025
      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
CentOS Docker安装gitlab
MySQL 8.0 绿色版安装
Docker安装SQLServer2019
Docker安装Redis
docker安装zookeeper
CentOS Docker安装gitea
你通过 docker-compose.yml 启动了 MySQL 容器后,更改了 .yml 中的默认密码,但执行 docker-compose up -d 后发现并没有生效
CentOS 7 安装 docker compose 教程
GZDBHelper连接MySQL数据库
docker安装gitlab root密码重置
C# .net项目Docker方式部署
CentOS Docker命令集合
Nuget安装
mysql服务器端运行环境要求
EF Core使用MySQL
Python安装

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