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
进行授权