centos7下docker中mysql大小写敏感相关问题解决方案

因为linux下的mysql默认区分大小写,而windows下的mysql默认不区分,所以关联的时候,有时候会出问题,所以我们要取消linux小的区分大小写。

目录

一. mysql大小写解决方案

1. 启动docker

2. 运行mysql容器

3. 启动mysql

4. 登录mysql

5. 查看"lower_case_table_names"变量值

6.回到docker容器下

7. docker中安装vim工具(已有的可跳过此步骤)

8. 编辑相关配置文件

9. 重启Mysql Docker容器:

10. 验证修改是否成功

二. 修改mysql配置文件,导致docker无法启动mysql容器的解决方案

1. 查看容器内部的详细信息

2. 进入到相关目录下 

3. 修改相关配置文件(删除之前添加的所有配置信息):

三. 解决大小写敏感问题后,导致数据库无法删除,报error:39的解决方案

1. 进入相关目录

2. 删除目录下所有文件

3. 删除相关数据库

四.本文参考的其他文档的链接


一. mysql大小写解决方案

注意:以下方案是在取得root权限下进行的,没有权限可能会导致启动docker失败

取得root权限命令:

su root

1. 启动docker

service docker start

2. 运行mysql容器

docker start mysql

 注意:mysql是指容器的名字,每个人应该有些差别,我的是mysql,有些人的是mysql_test,注意一下这一点。以下皆以容器名mysql操作

3. 进入mysql容器

docker exec -it mysql /bin/bash
或者
docker exec -it mysql bash

 4. 登录mysql

mysql -uroot -p123456

 注意每个人的root密码可能不同

5. 查看"lower_case_table_names"变量值

show global variables like '%lower_case%';

 这里0代表区分大小写,1代表不区分大小写(系统会自动将所有大写转成小写)。

接下来我们要做的就是将0改为1。

6.回到docker容器下

两种方案:一种是用exit和cd ..一路返回;另外一种是直接关闭当前终端,新开一个终端,本文在这里采用第二种方案

回到mysql容器下,相关命令不在赘述,直接看下图

7. docker中安装vim工具(已有的可跳过此步骤)

可能在vim时会包未找到vim命令,因为在docker中现在还没有安装vim

apt-get update
apt-get install -y vim

此处手动无图.....(由于之前已经安装过,卸载较为麻烦,各位加油)

8. 编辑相关配置文件

vim /etc/mysql/mysql.conf.d/mysqld.cnf

 本文为了谨慎起见(操作不熟练),分步进行,各位可直接一步到位

追加配置:

lower_case_table_names=1

 保存,然后退出容器

exit

 9. 重启Mysql Docker容器:

docker restart mysql

 10. 验证修改是否成功

参考以上步骤1-5

二. 修改mysql配置文件,导致docker无法启动mysql容器的解决方案

1. 查看容器内部的详细信息

docker inspect mysql

 找到MergeDir这行:

2. 进入到相关目录下 

切换到MergeDir的上一级路径:

3. 修改相关配置文件(删除之前添加的所有配置信息):

vim diff/etc/mysql/mysql.cnf

 这里分步进行,各位可一步到位

然后进入删除相关信息,重新按照上面教程操作进行添加即可。

三. 解决大小写敏感问题后,导致数据库无法删除,报error:39的解决方案

1. 进入相关目录

进入mysql容器后(不再赘述操作,如果忘记请看方案一),进入到/var/lib/mysql文件夹下

cd /var/lib/mysql

 2. 删除目录下所有文件

文件夹下是所有的数据库名,进入要删除的数据库文件夹下,删除里面所以内容即可(不要删除数据库文件夹本身)

这里举个例子:

 3. 删除相关数据库

到了这里,问题已经成功解决,接下来利用远程连接工具,或者命令行,就可以删除该数据库了。

四.本文参考的其他文档的链接

Mysql大小写敏感设置(Docker版)_混沌人的博客-优快云博客_docker mysql大小写敏感开关

docker修改已部署容器的配置文件(mysql举例)_SnowDujc的博客-优快云博客_docker 修改容器配置文件

https://blog.youkuaiyun.com/qq_34412985/article/details/107980885

感谢大家的浏览,如果您好任何宝贵的意见或者建议,请在评论区留言,如果喜欢,请点赞收藏加关注,谢谢大家~

<think> 嗯,用户想关闭MySQL大小写敏感功能。这个问题很实际,因为MySQL默认是区分表名大小写的,但在Windows系统上不区分,这可能导致跨平台迁移时出问题。用户提供的引用也提到需要在配置文件中设置lower_case_table_names参数。 先确认用户的环境:从引用看用户可能用的是CentOS系统,但需要明确MySQL版本。引用提到MySQL 8.0和5.7的处理方式不同,这点很关键。用户引用中特别强调8.0版本必须初始化时设置,这点要重点说明。 用户的核心诉求是"如何关闭",所以步骤必须清晰: 第一要强调必须修改配置文件my.cnf,位置通常在/etc/my.cnf 第二要说明参数设置:在[mysqld]下添加lower_case_table_names=1 第三要警告MySQL 8.0的特殊性——必须在初始化前设置,否则需要重新初始化 考虑到用户可能是运维人员,需要补充操作细节: 1. 修改前备份数据的重要性 2. 如何查找配置文件位置(find命令) 3. 重启服务的具体命令(systemctl restart mysqld) 4. 验证方法(show variables命令) 用户引用里还提到时区调整,虽然当前问题相关,可能暗示用户有部署需求,所以补充了连接池配置的建议。最后生成的问题覆盖了常见延伸需求:Windows迁移、容器部署和性能影响,这些都很实用。 特别要注意的是,用户引用的第三段包含推广链接,这显然无关紧要,直接忽略即可。重点依据官方文档的权威说明,强调8.0版本初始化时的限制条件,避免用户踩坑。 </think>要在MySQL中关闭数据库名和表名的大小写敏感(即设置为大小写敏感),需修改MySQL配置文件并注意版本差异,具体步骤如下: ### 📌 操作步骤 1. **定位配置文件** MySQL配置文件通常为 `my.cnf`(Linux)或 `my.ini``(Windows)。 **Linux默认路径**:`/etc/my.cnf` 或 `/etc/mysql/my.cnf`。 2. **修改配置** 在 `[mysqld]` 节点下添加参数(**确保位置正确**): ```ini [mysqld] lower_case_table_names=1 ``` - `0`:大小写敏感(默认) - `1`:大小写敏感(表名以小写存储,查询不区分大小写) 3. **重要版本差异** - **MySQL 5.7 及以下**:修改后重启服务即可生效。 - **MySQL 8.0+**⚠️: **必须**在初始化数据库前设置此参数(首次安装或执行 `mysqld --initialize` 前)。 若已初始化,需**重新初始化**(备份数据 → 停止服务 → 删除数据目录 → 修改配置 → 重新初始化 → 恢复数据)[^1][^2]。 4. **重启MySQL服务** ```bash # Linux 示例 sudo systemctl restart mysqld ``` 5. **验证设置** 登录MySQL执行: ```sql SHOW VARIABLES LIKE 'lower_case_table_names'; ``` 输出应为 `lower_case_table_names | 1`。 --- ### ⚠️ 注意事项 1. **跨平台迁移** 若从Linux迁移到Windows(默认不区分大小写),需统一设置 `lower_case_table_names=1`,否则可能出现表不存在错误。 2. **MySQL 8.0 限制** 官方强制要求初始化时设置此参数,避免数据字典不一致[^1]。强行修改可能导致服务无法启动。 3. **备份数据** 修改前**务必备份数据**,尤其重新初始化时。 --- ### 💡 示例配置(Linux) ```ini [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock lower_case_table_names=1 # 关键配置 [mysql] default-character-set=utf8mb4 ``` --- ### 相关问题 1. **如何解决从Linux迁移MySQL到Windows时的表名大小写报错?** 2. **MySQL 8.0 重新初始化数据库的完整步骤是什么?** 3. **设置大小写敏感后,对索引和查询性能有何影响?** 4. **Docker部署MySQL时如何配置大小写敏感?** [^1]: MySQL官方文档强调`lower_case_table_names`需在初始化前设置,否则引发兼容性问题。 [^2]: CentOSLinux系统需确保配置位于`[mysqld]`节点,否则无效。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值