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。如果你有闲暇时间,可以做个知识拓展。
评论