docker安装mysql8忽略大小写

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: docker安装mysql8忽略大小写

dockr安装mysql之后,发现该数据库对大小写敏感,各种修改配置、重启都不生效。

mysql表名是否区分大小写是通过lower_case_table_names参数来设置,登录mysql后可通过show Variables like '%table_names' 来查看默认的值

不同系统,该参数的默认值是不同的。

参数值 参数说明
lower_case_table_names=1 表名存储在磁盘是小写的,但是比较的时候是不区分大小写
lower_case_table_names=0 表名存储为给定的大小和比较是区分大小写的
lower_case_table_names=2 表名存储为给定的大小写但是比较的时候是小写的

windows环境默认 1 ,linux环境默认0 ,macos环境默认2

docker一般都是linux安装,linux系统的lower_case_table_names默认为0。如果在docker中/etc/mysql/my.cnf添加了 lower_case_table_names = 1 则会导致mysql无法启动。

2021-07-13T01:13:42.850794Z 1 [ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server ('1') and data dictionary ('0').
2021-07-13T01:13:42.851104Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2021-07-13T01:13:42.851430Z 0 [ERROR] [MY-010119] [Server] Aborting

官方给出的回答,mysql8如果想修改这个属性,必须在初始化数据库的时候就要指定该参数

加上 lower_case_table_names=1则在数据库会忽略大小写。

docker run -p 3306:33066 --name mysql -v /home/docker/mysql/conf:/home/docker/mysql/conf.d -v /home/docker/mysql/logs:/home/docker/mysql/logs -v /home/docker/mysql/data:/home/docker/mysql/data -e MYSQL_ROOT_PASSWORD=123456 -d mysql --lower_case_table_names=1

无法启动docker镜像时修改配置

当修改了my.cnf导致mysl无法启动时,这时候mysql是没有启动的,无法通过docker exec -it xx bin/bash进入mysql内部,这个时候要修改配置可以通过以下两种办法

方法一 复制到主机修改

把docker容器中的配置文件复制到主机中,然后在主机中修改,修改完成后再复制到docker容器中

1复制docker容器的文件到主机中
//docker cp [容器id]:docker容器中配置文件路径  主机路径
docker cp mysql:/etc/mysql/my.cnf /home/my.cnf
2 修改配置文件中出错的部分
3. 复制配置文件到docker容器中
//docker cp 主机文件路径 容器id:docker容器中配置文件路径
docker cp /home/my.cnf mysql:/etc/mysql/my.cnf
4. 重启docker

方法二 直接修改

docker inspect [containerId] ,可以找到如下的内容

进入这个文件夹,它和我们容器里的目录结构是一样的,所以我们直接修改这里面相应的配置也可以

修改docker中my.cnf配置

# docker中安装vim
apt-get update   # 访问源列表里的每个网址,并读取软件列表,然后保存在本地电脑
apt-get install vim 
cd /etc/mysql/
vi my.cnf
# 在 mysqld下添加 lower_case_table_names=1
# 重新初始化数据库
/usr/sbin/mysqld --user=mysql --lower-case-table-names=1 --initialize-insecure
# 等待一段时间,初始化完成后会有日志打印,默认的root密码为空

重启docker

查看是否生效

mysql -h localhost -u root -p 
Enter password: 直接回车
mysql> show variables like '%table_names';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | OFF   |
| lower_case_table_names | 1     |
+------------------------+-------+
2 rows in set (0.00 sec)

lower_case_table_names参数已经变为1


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5天前
|
弹性计算 Ubuntu Linux
阿里云服务器一键安装Docker社区版教程,基于系统运维管理OOS
阿里云服务器一键安装Docker社区版教程,基于系统运维管理OOS自动化部署。支持Ubuntu 22.04/20.04、CentOS 7.7-7.9及Alibaba Cloud Linux 3.2104 LTS。前提条件:ECS实例需运行中且有公网。步骤:选择Docker扩展并安装,验证成功通过命令`docker -v`查看版本号。
132 78
|
19天前
|
NoSQL 关系型数据库 应用服务中间件
docker基础篇:安装tomcat
docker基础篇:安装tomcat
152 64
|
15天前
|
关系型数据库 MySQL 数据库
【MySQL基础篇】MySQL概述、Windows下载MySQL8.0超详细图文安装教程
在这一章节,主要介绍两个部分,数据库相关概念及MySQL数据库的介绍、下载、安装、启动及连接。接着,详细描述了MySQL 8.0的版本选择与下载,推荐使用社区版(免费)。安装过程包括自定义安装路径、配置环境变量、启动和停止服务、以及客户端连接测试。此外,还提供了在同一台电脑上安装多个MySQL版本的方法及卸载步骤。最后,解释了关系型数据库(RDBMS)的特点,即基于二维表存储数据,使用SQL语言进行操作,格式统一且便于维护。通过具体的结构图展示了MySQL的数据模型,说明了数据库服务器、数据库、表和记录之间的层次关系。
【MySQL基础篇】MySQL概述、Windows下载MySQL8.0超详细图文安装教程
|
8天前
|
NoSQL 关系型数据库 Redis
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
50 14
|
6天前
|
关系型数据库 MySQL 应用服务中间件
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
35 7
|
21天前
|
关系型数据库 MySQL 数据库
docker高级篇(大厂进阶):安装mysql主从复制
docker高级篇(大厂进阶):安装mysql主从复制
93 24
|
11天前
|
安全 关系型数据库 MySQL
Windows Server 安装 MySQL 8.0 详细指南
安装 MySQL 需要谨慎,特别注意安全配置和权限管理。根据实际业务需求调整配置,确保数据库的性能和安全。
63 9
|
15天前
|
NoSQL 关系型数据库 MySQL
Linux安装jdk、mysql、redis
Linux安装jdk、mysql、redis
144 7
|
20天前
|
Ubuntu Linux Docker
Ubuntu22.04上Docker的安装
通过以上详细的安装步骤和命令,您可以在Ubuntu 22.04系统上顺利安装
304 11
|
8月前
|
关系型数据库 MySQL 数据库
使用 Docker 安装 MySQL 8
使用 Docker 安装 MySQL 8
1736 4

热门文章

最新文章