问题

直接修改/etc/my.cnf

lower_case_table_names = 1

重启报错:

Job for mysqld.service failed because the control process exited with error code. See “systemctl status mysqld.service” and “journalctl -xe” for details.

查看mysql-error.log

1 [ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server ('1') and data dictionary ('0').
0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
0 [ERROR] [MY-010119] [Server] Aborting

原因

mysql8.0要求我们不能在initialize之后再更改 lower_case_table_names 的值,也就是说,再通过更改 my.cnf 文件是不管用的。

要在初始化时设置 lower-case-table-names=1

mysqld --initialize-insecure --user mysql --datadir=/data/mysql --lower-case-table-names=1

编辑my.cnf 新添加

lower_case_table_names = 1

重启

systemctl restart mysqld

总结

已安装过的mysql8.0无法通过修改my.cnf实现表名大小写是否区分,需要重新安装数据库。

  • 重新安装前需要先备份好数据

  • 关闭数据库并清空数据目录/data/mysql

  • 启动数据库并初始化。初始化时带上参数 lower-case-table-names=1。

  • 修改初始化密码。

  • 修改my.cnf并重启mysql。

  • 导入备份数据。