Windows下安装的Mysql默认是不区分大小写的,而Linux下安装的Mysql默认是区分大小的,包括对数据库名、表名、表的的别名和变量名区分大小写,而对列名和列的别名不区分大小写。下面针对这种情况进行验证并作出相应的解决方法。

1、验证Linux下Mysql默认情况

现在mysql中有一个数据库为mytest,它有一个数据表user(name,sex),表中存放有一条数据。以下分别对数据库名,表名,表的别名,列名进行大小写区别验证。

a.默认对数据库名区分大小写

linux下设置mysql 数据库大小写不明感_大小写

由于建立的数据库为全部小写mytest,当大小写混合输入use myTEST时,提示未知数据库,即查找不到对应的数据库名,而小写输入use mytest时,查找正常,因此可以说明默认对数据库名区分大小写。

b.默认对表名区分大小写

linux下设置mysql 数据库大小写不明感_大小写_02

当查询时用表名的大写USER,提示表名不存在,而当用小写user时查询正常,可以说明默认对数据表区分大小写。

c.默认对表的别名区分大小写

linux下设置mysql 数据库大小写不明感_linux_03

用t作为表user的别名,当查询列“name”的值用大写的T时提示未知列名,而用小写t时查询正常,可以说明默认对表的别名区分大小写。

d.对列名不区分大小写

linux下设置mysql 数据库大小写不明感_数据库_04

由上面可以看出,不管列名用大写NAME还是用小写name,都可以正常查询,可以说明对列名不区分大小写。

 

2、解决方法

a.用root账号登陆Linux系统,在/etc/my.cnf文件中的[mysqld]后添加lower_case_table_names=1,如下:

linux下设置mysql 数据库大小写不明感_mysql_05

  

保存并退出。

b.重启数据库

linux下设置mysql 数据库大小写不明感_mysql_06

经过上面的操作,就可以令mysql忽略对大小写的敏感。

注意:

①lower_case_table_names 设置为0,表示区分大小写;lower_case_table_names

②当设置了lower_case_table_names

③如果在/etc或/etc/mysql下没有找到my.cnf的话,需要从其它地方拷贝过来,这是因为使用rpm方式安装时,默认是没有在/etc或/etc/mysql目录下生成my.cnf的,我们可以在/usr/share/mysql/下找到*.cnf文件,拷贝其中的一个放到/etc下并更名为my.cnf,然后再按上面的方法进行即可。

 

3、验证是否修改成功

a.验证数据库名:

linux下设置mysql 数据库大小写不明感_mysql_07

由以上看出,已忽略对数据库名大小写的区分。

b.验证表名:

linux下设置mysql 数据库大小写不明感_大小写_08

由以上看出,已忽略对表名大小写的区分。

c.验证表的别名:

linux下设置mysql 数据库大小写不明感_大小写_09

由以上看出,已忽略对表的别名大小写的区分。

至此,关于linux中mysql默认对大小写区分的解决方法已完成。