Linux MySQL 8.0.29 忽略表名大小写配置

Linux MySQL 8.0.29 忽略表名大小写配置

问题背景

突然发现有个大写的表报不存在。

在Windows上,MySQL是默认支持忽略大小写的。

这个时候你要查询一下是不是没有配置:

sql 复制代码
SHOW VARIABLES LIKE 'lower_case_table_names';

如果是0,说明没有配置,具体配置:

sql 复制代码
[mysqld]
lower_case_table_names=1  # 设置表名不区分大小写

但是,一直重启失败。。。

说明我们的MySQL太新了。

那下面的解决方案也许适合你。

解决方案

MySQL 8.0.17之后,如果数据目录已经存在(就是你已经初始化msyql了),那就凉凉了,需要删除所有数据重新初始化。

sql 复制代码
# 1、备份所有数据库(必须要,不然数据全部没有了!!!)
mysqldump -u root -p --all-databases > all-databases-backup.sql

# 2、删除旧数据目录
sudo rm -rf /var/lib/mysql/  # 默认路径,根据实际安装目录调整

# 3、重新初始化 MySQL
sudo mysqld --initialize --user=mysql --lower-case-table-names=1

# 4、设置 root 密码
sudo grep 'temporary password' /var/log/mysqld.log  # 获取临时密码,根据实际安装目录调整

# 5、登录MySQL
mysql -u root -p

# 6、修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';

# 7、导入备份的数据库
mysql -u root -p < all-databases-backup.sql

遇到的问题:

mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: YES) when trying to connect

在执行第一步备份的时候,说明你的密码错了。

重新设置一下密码即可:

sql 复制代码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xxx';
相关推荐
Chasing__Dreams1 天前
Mysql--基础知识点--95--为什么避免使用长事务
数据库·mysql
楠奕1 天前
CentOS7安装GoldenDB单机搭建及常见报错解决方案
linux·运维·服务器
剑锋所指,所向披靡!1 天前
Linux常用指令(2)
linux·运维·服务器
不愿透露姓名的大鹏1 天前
Oracle归档日志爆满急救指南
linux·数据库·oracle·dba
W.W.H.1 天前
嵌入式常见的面试题1
linux·网络·经验分享·网络协议·tcp/ip
木白CPP1 天前
DMA-Buffer内核驱动API文档
linux
数据知道1 天前
claw-code 源码分析:OmX `$team` / `$ralph`——把 AI 辅助开发从偶发灵感变成可重复流水线
数据库·人工智能·mysql·ai·claude code·claw code
__土块__1 天前
大厂后端一面模拟:从线程安全到分布式缓存的连环追问
jvm·redis·mysql·spring·java面试·concurrenthashmap·大厂后端
HXQ_晴天1 天前
Linux 系统的交互式进程监控工具htop
linux·服务器·网络
做个文艺程序员1 天前
深入 MySQL 内核:MVCC、Buffer Pool 与高并发场景下的极限调优
数据库·mysql·adb