文章

MySQL中忽略大小写参数

MySQL在设置了一个参数后总是启动不起来,这个参数是lower_case_table_names=1,设置了这个参数后表名在存储和比较时都转为小写(如 SELECT * FROM MyTable 会被视为 mytable),而且这个参数必须在初始化数据目录前设置。如果已有数据且之前参数是 0(默认),修改后会导致启动失败(需重建数据目录)。

然而Ubuntu在安装MySQL后会自动启动,需要在首次安装 MySQL 并初始化数据目录之前就配置该参数。

卸载已安装的 MySQL(如果已安装)
1
2
3
# 彻底卸载 MySQL(保留数据目录,后续会重新初始化)
sudo apt purge mysql-server mysql-client mysql-common
sudo apt autoremove
修改配置文件
1
2
3
4
5
# 创建配置目录(如果不存在)
sudo mkdir -p /etc/mysql/mysql.conf.d/

# 编辑配置文件
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
1
2
3
[mysqld]
lower_case_table_names = 1
bind-address = 0.0.0.0
安装 MySQL 但不自动初始化
1
2
# 安装 MySQL 包(不自动启动和初始化)
sudo apt install mysql-server -y

过程中会提示要不要应用之前的配置文件还是使用默认的进行覆盖,选择N使用原来的配置,默认就是N可以直接回车:

1
2
3
4
5
6
7
8
9
10
Configuration file '/etc/mysql/mysql.conf.d/mysqld.cnf'
 ==> File on system created by you or by a script.
 ==> File also in package provided by package maintainer.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** mysqld.cnf (Y/I/N/O/D/Z) [default=N] ?

这样就初始化成了忽略大小写的设置了。

最后可以设置为开机自启动

1
2
3
4
5
# 启动 MySQL 服务
sudo systemctl start mysql

# 设置开机自启
sudo systemctl enable mysql
本文由作者按照 CC BY 4.0 进行授权