设置MySQL8.0为大小写不敏感

一、登录MySQL

登录 MySQL

mysql -u root -p

查看当前大小写敏感设置

SHOW VARIABLES LIKE 'lower_case_table_names';

返回值含义:

  • 0 = 大小写敏感(区分大小写)
  • 1 = 大小写不敏感(不区分大小写)
  • 2 = 表名存储为给定的大小写但是以小写比较

二、修改配置文件

注意:如果MySQL中已存在了很多库和表及各种数据,修改前先备份数据

# 备份所有数据库
mysqldump -u root -p --all-databases > backup.sql

然后再:

  1. 打开配置文件:
# 适用于CentOS、RHEL、Fedora
sudo vi /etc/my.cnf
# 或(适用于Ubuntu、Debian):
sudo vi /etc/mysql/my.cnf 
  1. 在 [mysqld] 部分添加或修改:
[mysqld]
lower_case_table_names=1

三、重启 MySQL 服务

只有重启后,才能永久生效。

# CentOS/RHEL
sudo systemctl restart mysqld

# Ubuntu
sudo systemctl restart mysql

如果重启失败,报错类似:

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

  1. 按提示查看错误日志:
# 查看服务状态
systemctl status mysqld.service

# 查看详细日志
journalctl -xe

# 查看 MySQL 错误日志
sudo tail -f /var/log/mysqld.log
  1. 其实这时候错误发生的主要原因是配置文件里的参数改了,但没有生效:

2024-10-29T11:32:10.290204Z 1 [ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server (‘1’) and data dictionary (‘0’).
2024-10-29T11:32:10.290444Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.

解决的办法就是:
1)先停止 MySQL 服务:

sudo systemctl stop mysqld

2)再次备份数据(如果有重要数据)

sudo cp -r /var/lib/mysql /var/lib/mysql_backup

3)删除数据目录:

sudo rm -rf /var/lib/mysql/*

4) 确认配置文件设置:

sudo vi /etc/my.cnf

# 在 [mysqld] 部分确保有:
[mysqld]
lower_case_table_names=1

5)重新初始化 MySQL:

sudo mysqld --initialize --user=mysql

6)设置正确的权限:

sudo chown -R mysql:mysql /var/lib/mysql
sudo chmod -R 755 /var/lib/mysql

7)启动 MySQL,并检查服务器状态

sudo systemctl start mysqld
sudo systemctl status mysqld

8)验证设置:

# 登录 MySQL(使用临时密码)
mysql -u root -p

# 检查设置
SHOW VARIABLES LIKE 'lower_case_table_names';

这个时候注意使用的是新的临时密码,因为前面5)的时候重新初始化了mysql,所以以前的密码全部重置了。

  • 查看临时密码:
sudo grep 'temporary password' /var/log/mysqld.log

验证完成后,就可以重新对MySQL进行安全性配置和远程访问配置了:安装配置mysql 8.0(含设置mysql为大小写不敏感)及远程访问设置

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值