docker环境下如何更改mysql的大小写敏感性(一)

背景:测试框架时发现因数据大小写不一致导致运行异常,尝试更改mysql的大小写不敏感。

重要的事情说三遍:

此方法仅限于数据库未初始化前!

此方法仅限于数据库未初始化前!

此方法仅限于数据库未初始化前!

如果已有数据怎么办?参见(二)

一、进入容器内进行处理。

1.查看mysql容器

docker ps

 C:\Users\flycatony>docker ps
CONTAINER ID   IMAGE                 COMMAND                  CREATED      STATUS       PORTS                                                                                                         NAMES
b17efb0c0cd5   rabbitmq:management   "docker-entrypoint.s…"   8 days ago   Up 2 hours   4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, 15671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp   mom-rabbitmq
ffcf6c8e1ef7   redis                 "docker-entrypoint.s…"   8 days ago   Up 2 hours   0.0.0.0:6379->6379/tcp                                                                                        redis-mom
5d2978d2469d   mysql:latest          "docker-entrypoint.s…"   8 days ago   Up 2 hours   33060/tcp, 0.0.0.0:63306->3306/tcp                                                                            mysql8

确定mysql实例的容器ID,如我的ID为 5d2978d2469d

2.进入容器:docker exec -it 容器id bash

docker exec -it 5d2978d2469d bash

3.登录mysql:mysql -u用户名 -p密码

mysql -uroot    -proot123

-u和-p接的用户名和密码之间是没有空格的,请根据实际更改成您的用户名和密码。 

4.查看大小写配置:show global variables like '%lower_case%';

show global variables like '%lower_case%';

注意以“;”结束。 

mysql> show global variables like '%lower_case%'
    -> ;
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | OFF   |
| lower_case_table_names | 0     |
+------------------------+-------+
2 rows in set (0.00 sec) 

 这里【lower_case_table_names=0】表示大小写敏感的,需要改为1。

5.进入docker的MySQL容器,编辑/etc/mysql/my.cnf文件(每个系统可能有所不一样)

①退出Mysql,进入docker。

exit

root@5d2978d2469d:/#

注意提示符的变化。之前的是这样

 mysql>

 ②输入vi

vi

root@5d2978d2469d:/# vi
bash: vi: command not found

二、安装vi

①输入apt-get update

apt-get update

注意【apt-get】是一个整体,中间没有空格。

root@5d2978d2469d:/# apt-get update
Get:1 http://security.debian.org/debian-security buster/updates InRelease [65.4 kB]
Get:2 http://deb.debian.org/debian buster InRelease [122 kB]
Get:3 http://deb.debian.org/debian buster-updates InRelease [51.9 kB]
Get:4 http://security.debian.org/debian-security buster/updates/main amd64 Packages [318 kB]
Get:5 http://deb.debian.org/debian buster/main amd64 Packages [7911 kB]
Get:6 http://repo.mysql.com/apt/debian buster InRelease [22.1 kB]
Get:7 http://repo.mysql.com/apt/debian buster/mysql-8.0 amd64 Packages [8447 B]
Get:8 http://deb.debian.org/debian buster-updates/main amd64 Packages [8796 B]
Fetched 8507 kB in 1min 39s (86.3 kB/s)
Reading package lists... Done

安装完成。

②安装vim:apt-get install  vim

apt-get install  vim

 出现确认提示输入“Y”即可,等待安装完成。

三、在【mysqld】下添加 【lower_case_table_names=1】

①打开文件my.cnf

vim /etc/mysql/my.cnf

②编辑相关内容。

[mysqld]
pid-file            =/var/run/mysqld/mysqld.pid
socket              =/var/run/mysqld/mysqld.sock
datadir             =/var/lib/mysql
secure-file-priv    =NULL
lower-case-table-names=1

 ③保存WQ

vim编辑命令中使用

首先使用esc(键退出)->:(符号输入)->wq(保存退出)

:wq(保存编辑操作退出)

:wq!(保存编辑强制退出

④重新启动Docker容器。

docker restart 5d2978d2469d

四,如果出现docker无法启动怎么办?

此时只是mysql数据库无法启动而已,Docker容器是正常的。可通过以下办法恢复。

①拷贝配置文件至本机。

docker cp  5d2978d2469d:/etc/mysql/my.cnf my.cnf

②恢复配置文件。

把你更改的改了,或重建一个新实例把文件拷贝出来即可。

③再把改好的文件拷贝回去即可。

docker cp my.cnf 5d2978d2469d:/etc/mysql/my.cnf

五、如果以上办法无法解决怎么办?直接新建一个库,把数据重新挂接上即可。详细另写。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值