MySQL8表名设置不区分大小写

在默认情况下mysql8在linux安装是区分表名大小写的。

当安装完成数据库,启动数据库前,先去mysql配置文件中添加lower_case_table_names=1,然后执行service mysql start 进行首次初始化数据库和启动。

但是在ubuntu系统中,装完MySQL后会自动启动,所以添加了lower_case_table_names=1之后重启MySQL,会启动失败。

在 MySQL8中,数据目录初始化之后,不再允许更改lower_case_table_names = 1的值,因此修改此配置的话要先删除数据库文件,需提前备份老数据。

1.备份数据库

2.停止数据库
service mysql stop

3.删除数据库文件
rm -rf /var/lib/mysql

4.打开配置文件设置大小写参数保存

1
2
[mysqld]
lower_case_table_names=1

5.创建mysql目录并初始化数据目录

1
2
3
sudo mkdir -p /var/lib/mysql
sudo chown -R mysql:mysql /var/lib/mysql
sudo mysqld --initialize --user=mysql --datadir=/var/lib/mysql

6.重启服务
service mysql restart

因为老数据库文件被删除,此时无法登录mysql,报错:

1
2
3
sudo mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

7.设置 root 用户密码:找到临时密码并登录后更改 root 用户密码。

1
2
sudo grep 'temporary password' /var/log/mysql/error.log
mysql -u root -p

8.使用临时密码登录后:

1
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword';