Mysql(Docker) -Mysql5.7版本表名大小写

Mysql(Docker) -Mysql5.7版本表名大小写

背景: 公司做项目,最开始使用的是 Windows 作为开发环境,由于个人爱好,选择了 deepin V20 作为了主开发环境,在使用 Docker 启动 Mysql 的时候完全正常,一旦在系统中使用,就发现表名大小写有问题,于是我找了博客阅读,得到的结果都是修改参数 lower_case_table_name=1 但是我的问题最终还是没有解决

参考地址: https://www.cnblogs.com/smallmin/p/11582954.html

  • 启动MySQL服务
docker run -dit --name mysql5.7 -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:5.7
  • 进入mysql容器寻找my.cnf 路径并查看
## 进入容器
docker exec -it mysql5.7 bash
## 查看my.cnf所在路径
find -name 'my.cnf'

查找结果:
my.cnf所在位置

  • dockermy.cnf复制到宿主机上
docker cp mysql:/etc/mysql/my.cnf ${HOME}/opt/mysql/
  • 查看是否复制成功
ls ${HOME}/opt/mysql

结果:
在这里插入图片描述

  • 新建 mysql 容器启动mysql:5.7 这里因为我做了外部的挂在,所以启动命令比较长
sudo docker run -p 3306:3306 --restart=always \
--privileged=true --name mysql \
-v ${HOME}/opt/mysql/data:/var/lib/mysql \
-v ${HOME}/opt/mysql/my.cnf:/etc/mysql/my.cnf \
-e MYSQL_ROOT_PASSWORD="root" -d mysql:5.7

启动成功后,进入容器查看表名是否有大小写的区分:

show variables like 'lower_case_table_names%';
-- 0 表示区分表名大小写,  1 不区分表名大小写
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_table_names | 0     |
+------------------------+-------+
  • 执行两次 exit 命令,先从 MySQL 中退出到容器内部,然后再从容器中退出到宿主机上。
    在这里插入图片描述
## 这里注意了,必须使用 sudo 来操作,因为我的普通用户权限比较低,而且 my.cnf 文件权限较高,千万不要修改 my.cnf的权限级别,否则会出现启动失败的问题
sudo vim ${HOME}opt/mysql/my.cnf

my.cnf 最初的样子
注释掉

# !includedir /etc/mysql/conf.d/
# !includedir /etc/mysql/marriadb.conf.d/
## 新增如下内容
[mysqld]
lower_case_table_names=1

# esc : wq 即可
  • Docker 重启 mysql 容器
	docker restart mysql
  • 进入容器查看 variables
## 进入容器
docker  exec -it  mysql bash
## 登录mysql
mysql -uroot -proot
## 查询关闭表名大小写的设置
mysql > show variables like 'lower_case_%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_table_names | 1     |
+------------------------+-------+
  • 总结
    1.如果你的 docker 容器启动失败,那么可以查看docker 日志,来确定错误的位置
docker logs -f -t --tail <行数> <容器名称>

2.从docker中复制出my.cnf文件的时候,在你不彻底明白mysql 对文件权限的要求情况下,千万不要修改他的读写权限,最开始我一直是使用头touch my.cnf没有给指定权限,所以导致mysql容器一直启动失败或my.cnf无法生效.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值