Docker 怎么部署 MySQL ?

1、创建配置目录

mkdir -p MySQL目录/conf

2、切换到配置目录

cd MySQL目录/conf

3、创建配置文件

vim my.cnf
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[mysqld]
# 设置3306端口
port=3306
# 允许最大连接数
max_connections=1000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=100
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names=1
# MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
interactive_timeout =1800
# MySQL默认的wait_timeout  值为8个小时, interactive_timeout参数需要同时配置才能生效
wait_timeout=1800
# Metadata Lock最大时长(秒), 一般用于控制 alter操作的最大时长sine mysql5.6
# 执行 DML操作时除了增加innodb事务锁外还增加Metadata Lock,其他alter(DDL)session将阻塞
lock_wait_timeout=3600
# 内部内存临时表的最大值。
# 比如大数据量的group by ,order by时可能用到临时表,
# 超过了这个值将写入磁盘,系统IO压力增大
tmp_table_size=64M
max_heap_table_size=64M
# 设置分组模式
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
# 设置全局聚合方式
init_connect='SET collation_connection = utf8mb4_general_ci'
init_connect='SET NAMES utf8mb4'
# 设置密码验证规则
authentication_policy=mysql_native_password
# 服务端使用的字符集默认为UTF8
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
# 跳过客户端发送的字符集信息
skip-character-set-client-handshake
# 禁用DNS解析
skip-name-resolve

4、运行镜像

docker run -p 3306:3306 \
           --name=mysql \
           --restart=always \
           --privileged=true \
           -v MySQL目录/conf:/etc/mysql/conf.d \
           -v MySQL目录/logs:/var/log \
           -v MySQL目录/data:/var/lib/mysql \
           -v MySQL目录/mysql-files:/var/lib/mysql-files \
           -e MYSQL_ROOT_PASSWORD=数据库密码 \
           -d \
           mysql:8.0.32
  • --restart=always:随docker启动。
  • --privileged=true:容器内的root拥有真正的root权限。
  • -e MYSQL_ROOT_PASSWORD=:设置root账号的密码。

5、旧版本字符集校正

旧版本的字符集格式与8.0版本是有出入的,执行下面3个SQL的查询结果,即可校正MySQL字符集为8.0格式。

  • select concat('alter database ', schema_name, ' default character set utf8mb4 collate utf8mb4_general_ci;')
      from information_schema.schemata
     where schema_name not in ('sys', 'mysql', 'performance_schema', 'information_schema')
       and (lower(default_collation_name) != 'utf8mb4_general_ci' or lower(default_character_set_name) != 'utf8mb4');
  • select concat('alter table ', table_schema, '.', table_name,
                  ' default character set utf8mb4 collate = utf8mb4_general_ci;')
      from information_schema.tables
     where table_schema not in ('sys', 'mysql', 'performance_schema', 'information_schema')
       and table_type = 'BASE TABLE'
       and lower(table_collation) != 'utf8mb4_general_ci';
  • set group_concat_max_len = 10240;
    
    select concat(c1, c2, ';')
      from (select c1, group_concat(c2) c2
              from (select concat('alter table ', t1.table_schema, '.', t1.table_name) c1,
                           concat(' modify ', '`', t1.column_name, '` ', t1.data_type,
                                  if(t1.data_type in ('varchar', 'char'), concat('(', t1.character_maximum_length, ')'),
                                     ''),
                                  if(t1.column_default != '', concat(' default \'', t1.column_default, '\''), ''),
                                  ' collate utf8mb4_general_ci',
                                  if(t1.is_nullable = 'NO', ' not null', ' null'), ' comment ', '''', t1.column_comment,
                                  '''')                                                c2
                      from information_schema.columns t1,
                           information_schema.tables t2
                     where t1.table_schema = t2.table_schema
                       and t1.table_name = t2.table_name
                       and t2.table_type = 'BASE TABLE'
                       and (lower(t1.collation_name) != 'utf8mb4_general_ci' or lower(t1.character_set_name) != 'utf8mb4')
                       and t1.table_schema not in ('sys', 'mysql', 'performance_schema', 'information_schema')) t1
             group by c1) t;

前端的世界总是在不断变化,作为开发者,我们需要保持好奇心和学习热情,不断探索新的技术,只有这样,我们才能在这个快速发展的时代中立于不败之地。Web Components 就是这样一个值得我们深入探索的领域,让我们拭目以待,它将给前端世界带来怎样的变革。

介绍一款程序员都应该知道的软件JNPF快速开发平台,很多人都尝试用过它,它是功能的集大成者,任何信息化系统都可以基于它开发出来。

这是一个基于 Java Boot/.Net Core 构建的简单、跨平台快速开发框架。前后端封装了上千个常用类,方便扩展;集成了代码生成器,支持前后端业务代码生成,实现快速开发,提升工作效率;框架集成了表单、报表、图表、大屏等各种常用的 Demo 方便直接使用;后端框架支持 Vue2、Vue3。如果你有闲暇时间,可以做个知识拓展。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值