docker安装mysql8忽略大小写

124 篇文章 0 订阅
87 篇文章 0 订阅

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

  • 29
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

讓丄帝愛伱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值