Mysql8.0修改配置参数lower_case_table_names
现象
今天在配置一个环境的数据库,所使用的系统要求该数据库 lower_case_table_names = 1
(对数据库表明、列名大小写不敏感)
我看了一下,在 Windows 上,默认值为 1。在 macOS 上,默认值是 2。在 Linux 上,不支持值 2;服 务器会将该值设置为 0。
那0是不符合我们需求的,于是我打开my.cnf
进行添加配置。
重新启动时报错如下
2024-11-28T10:16:01.439651Z 1 [ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server ('1') and data dictionary ('0').
2024-11-28T10:16:01.439773Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2024-11-28T10:16:01.439790Z 0 [ERROR] [MY-010119] [Server] Aborting
解决过程
Different lower_case_table_names settings for server ('1') and data dictionary ('0').
服务器(“1”)和数据字典(“0”)的lower_case_table_names设置不同。
难道是还有别的要改吗?
搜了一下,发现已经初始化过的mysql8.0是不允许修改该参数的,如果需要修改则需要重新初始化
还好这是个空环境,那就重新初始化mysql吧
重新初始化
停止mysql服务
sudo systemctl stop mysql
移除现有的数据目录
sudo rm -rf /var/lib/mysql/*
使用 mysqld --initialize
命令重新初始化 MySQL 数据目录
sudo mysqld --initialize --user=mysql
启动 MySQL 服务以应用新的配置
sudo systemctl start mysql
使用临时密码登录 MySQL 并更改密码。首先找到临时密码
sudo grep 'temporary password' /var/log/mysql/error.log
使用临时密码登录
mysql -u root -p
登录成功后在 MySQL 下更改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword';
FLUSH PRIVILEGES;
至此就可以了。