mysql8设置大小写不敏感

123 阅读1分钟

前言: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. 重要说明

  1. 必须删除数据目录:因为MySQL 8.0要求该参数在初始化前设置

  2. 初始化命令差异

    # 正确(显式指定参数)
    sudo mysqld --initialize --user=mysql --lower-case-table-names=1
    
    # 错误(依赖配置文件)
    sudo mysqld --initialize --user=mysql  # 这样不会生效!