前言:MySQL 5.7可动态修改lower_case_table_names参数,MySQL 8.0必须初始化前设置,本文章适用新安装mysql,没有重要数据,可清除所有数据。
1. 停止MySQL服务
sudo systemctl stop mysqld
2. 删除初始化的数据目录
sudo rm -rf /var/lib/mysql/*
3. 编辑配置文件/etc/my.cnf(确保有以下内容)
[mysqld]
# 关键参数必须放在这里
lower_case_table_names=1
4. 重新初始化(关键步骤!)
sudo mysqld --initialize --user=mysql --lower-case-table-names=1
5. 检查生成的临时密码
sudo grep 'temporary password' /var/log/mysqld.log
6. 修复权限
sudo chown -R mysql:mysql /var/lib/mysql
7. 启动服务
sudo systemctl start mysqld
8. 验证参数是否生效
mysql -u root -p
SHOW VARIABLES LIKE 'lower_case%';
# 如下:说明设置成功
mysql> SHOW VARIABLES LIKE 'lower_case%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_file_system | OFF |
| lower_case_table_names | 1 |
+------------------------+-------+
2 rows in set (0.00 sec)
9. 重要说明
-
必须删除数据目录:因为MySQL 8.0要求该参数在初始化前设置
-
初始化命令差异:
# 正确(显式指定参数) sudo mysqld --initialize --user=mysql --lower-case-table-names=1 # 错误(依赖配置文件) sudo mysqld --initialize --user=mysql # 这样不会生效!