今天在帮小伙伴部署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下数据库名、表名、列名、别名大小写规则是这样的:
- 数据库名与表名是严格区分大小写的;
- 表的别名是严格区分大小写的;
- 列名与列的别名在所有的情况下均是忽略大小写的;
- 变量名也是严格区分大小写的;
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或名称]
完结,撒花