Docker容器下MySQL遇到的两个问题

今天在帮小伙伴部署Docker的时候遇到了两个问题。特来总结一下。

1、MySQL数据库Linux环境下设置表名不区分大小写。

2、Docker中互相访问的地址为Docker的容器地址,因此MySQL的地址需要设置为容器的IP地址。


首先解决第一个问题:

在Linux环境下,MySQL数据库的表名默认是区分大小写的。
因此为了方便使用,需要设置MySQL数据库表名不区分大小写。
因此可以修改MySQL的配置文件 /etc/my.cnf 添加一行语句。
lower_case_table_names=1
[mysqld]
lower_case_table_names=1
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
#log-error = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

修改说明如下:
lower_case_table_names参数详解:
其中 0:区分大小写,1:不区分大小写

MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:
  1. 数据库名与表名是严格区分大小写的;
  2. 表的别名是严格区分大小写的;
  3. 列名与列的别名在所有的情况下均是忽略大小写的;
  4. 变量名也是严格区分大小写的;
MySQL在Windows下都不区分大小写。

如果想在查询时区分字段值的大小写,则:字段值需要设置BINARY属性,设置的方法有多种:
  • 创建时设置:
CREATE TABLE T(
A VARCHAR(10) BINARY
);
  • 使用alter修改:
ALTER TABLE`tablename` MODIFY COLUMN `cloname` VARCHAR(45) BINARY;
  • mysql tableeditor中直接勾选BINARY项。

在Docker中的修改操作如下:
进入容器,找到配置文件:
docker exec -it mysql /bin/bash
cd etc/mysql/mysql.conf.d
然后将文件拷贝到linux上修改:
docker cp mysql:/etc/mysql/mysql.conf.d/mysqld.cnf /root/test
vi mysql.conf
将文件拷贝到容器当中:
docker cp /root/test/mysql.conf mysql:/etc/mysql/mysql.conf.d/
重启服务:
docker restart mysql


第二个问题:

Docker容器在启动时便会配置IP地址,但如果忘记了可以使用如下命令获得。

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' [容器ID或名称]

docker inspect [容器ID或名称]



完结,撒花

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值