Ubuntu 18.04虚拟机中MySQL 8.0无法设置lower_case_table_names=1求助
解决MySQL 8.0在Ubuntu 18.04上无法设置lower_case_table_names=1的问题
我之前也踩过这个坑!MySQL 8.0对lower_case_table_names这个参数的设置逻辑做了严格调整,跟之前的版本完全不一样——这个参数必须在数据库实例初始化之前就配置好,如果已经完成初始化再去修改配置文件,必然会导致服务启动失败,因为元数据的大小写格式已经固定了。
下面分两种情况给你具体的解决步骤:
情况一:刚安装的MySQL,没有重要数据
这种情况最简单,直接重新初始化实例即可:
- 先停止MySQL服务:
sudo systemctl stop mysql - 清空已初始化的数据目录(确保没重要数据再执行!):
sudo rm -rf /var/lib/mysql/* - 修改配置文件
/etc/mysql/mysql.conf.d/mysqld.cnf,在[mysqld]段添加一行:lower_case_table_names=1 - 重新初始化MySQL实例,这里要显式指定参数确保生效:
sudo mysqld --initialize --user=mysql --lower_case_table_names=1 - 启动服务并设置新密码:
sudo systemctl start mysql # 查看初始化生成的临时root密码 sudo grep 'temporary password' /var/log/mysql/error.log # 登录后修改密码 mysql -u root -p ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
情况二:已有重要数据,不能清空
这种情况需要先备份数据,再重新初始化后恢复:
- 先备份所有数据库(推荐用mysqldump):
mysqldump -u root -p --all-databases > all_databases_backup.sql - 按照上面情况一的步骤1-4,重新初始化实例并设置
lower_case_table_names=1 - 恢复备份的数据:
注意:恢复后原来的大写表名会自动转为小写存储,查询时MySQL会自动处理大小写不敏感的匹配。mysql -u root -p < all_databases_backup.sql
重要提醒
一旦实例初始化完成并设置了lower_case_table_names=1,之后就不能再修改这个参数的值了,否则MySQL服务同样会启动失败,这个是MySQL 8.0的硬性限制。
内容的提问来源于stack exchange,提问作者cc15
相关产品推荐
相关产品推荐

