You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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,没有重要数据

这种情况最简单,直接重新初始化实例即可:

  1. 先停止MySQL服务:
    sudo systemctl stop mysql
    
  2. 清空已初始化的数据目录(确保没重要数据再执行!):
    sudo rm -rf /var/lib/mysql/*
    
  3. 修改配置文件/etc/mysql/mysql.conf.d/mysqld.cnf,在[mysqld]段添加一行:
    lower_case_table_names=1
    
  4. 重新初始化MySQL实例,这里要显式指定参数确保生效:
    sudo mysqld --initialize --user=mysql --lower_case_table_names=1
    
  5. 启动服务并设置新密码:
    sudo systemctl start mysql
    # 查看初始化生成的临时root密码
    sudo grep 'temporary password' /var/log/mysql/error.log
    # 登录后修改密码
    mysql -u root -p
    ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
    

情况二:已有重要数据,不能清空

这种情况需要先备份数据,再重新初始化后恢复:

  1. 先备份所有数据库(推荐用mysqldump):
    mysqldump -u root -p --all-databases > all_databases_backup.sql
    
  2. 按照上面情况一的步骤1-4,重新初始化实例并设置lower_case_table_names=1
  3. 恢复备份的数据:
    mysql -u root -p < all_databases_backup.sql
    
    注意:恢复后原来的大写表名会自动转为小写存储,查询时MySQL会自动处理大小写不敏感的匹配。

重要提醒

一旦实例初始化完成并设置了lower_case_table_names=1,之后就不能再修改这个参数的值了,否则MySQL服务同样会启动失败,这个是MySQL 8.0的硬性限制。

内容的提问来源于stack exchange,提问作者cc15

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:39:14