宝塔mysql8.0设置数据库区分大小写

ops/2025/2/22 1:52:32/

在宝塔面板中,MySQL 数据库的大小写敏感设置是通过修改 MySQL 配置文件(my.cnf 或 my.ini)中的 lower_case_table_names 参数来实现的。但宝塔安装mysql8.0后lower_case_table_names 默认为1,直接修改配置并重启会导致报错:

[ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server ('0') and data dictionary ('1') 表明 MySQL 服务器配置的 lower_case_table_names 值与数据字典(Data Dictionary)中存储的值不一致

  • 服务器当前配置值0(区分大小写)。

  • 数据字典存储值1(不区分大小写)。

此问题通常发生在以下场景:

  1. 安装 MySQL 时未显式设置 lower_case_table_names,后续修改配置文件后直接重启服务。

  2. 在已初始化的 MySQL 实例中直接修改 lower_case_table_names 参数,未重新初始化数据目录。


解决方案

需 重新初始化 MySQL 数据目录,确保服务器配置与数据字典一致。以下是详细步骤:


步骤 1:备份数据

停止 MySQL 服务前,务必备份所有数据,避免丢失。

# 使用 mysqldump 备份所有数据库(需 root 权限)
mysqldump -u root -p --all-databases > /path/to/backup.sql

步骤 2:停止 MySQL 服务
# 通过宝塔面板停止 MySQL,或使用命令行:
sudo systemctl stop mysqld

步骤 3:删除旧数据目录

删除 MySQL 数据目录(默认路径为 /var/lib/mysql,宝塔面板路径为 /www/server/data):

# 宝塔面板默认数据目录(谨慎操作!)
sudo rm -rf /www/server/data/*

步骤 4:修改配置文件

在宝塔面板中修改 MySQL 配置文件(my.cnf):

  1. 进入 宝塔面板 > 数据库 > MySQL 设置 > 配置文件

  2. 在 [mysqld] 部分添加或修改以下参数:

    [mysqld]
    lower_case_table_names=0  # 根据需求设置为 0 或 1
  3. 保存配置。


步骤 5:重新初始化 MySQL

重新初始化数据目录(此操作会生成新的数据字典):

# 进入 MySQL 安装目录(宝塔默认路径)
cd /www/server/mysql/bin# 执行初始化命令(生成临时 root 密码)
sudo ./mysqld --initialize --user=mysql --lower-case-table-names=0
  • --lower-case-table-names=0 需与配置文件中设置的值一致。


步骤 6:恢复文件权限
sudo chown -R mysql:mysql /www/server/data

步骤 7:启动 MySQL 服务
sudo systemctl start mysqld

步骤 8:验证配置
  1. 登录 MySQL:

    mysql -u root -p
  2. 检查 lower_case_table_names 值:

    SHOW VARIABLES LIKE 'lower_case_table_names';

    输出应与配置文件中设置的值一致(如 0)。


步骤 9:恢复数据

从备份文件恢复数据:

mysql -u root -p < /path/to/backup.sql

注意事项

  1. 操作系统与文件系统

    • Linux 默认文件系统区分大小写,建议 lower_case_table_names=0

    • Windows 文件系统不区分大小写,需设置为 lower_case_table_names=1

  2. 跨平台迁移

    • 若需迁移数据库到不同操作系统,需确保目标环境的 lower_case_table_names 配置一致。

  3. 数据一致性

    • 若原数据在 lower_case_table_names=1 模式下创建,改为 0 后可能导致表名冲突(如 MyTable 和 mytable 会被视为不同表)。


常见问题

Q1:重新初始化后无法启动 MySQL
  • 原因:权限配置错误或数据目录未清空。

  • 解决

    1. 检查数据目录权限:chown -R mysql:mysql /www/server/data

    2. 确保旧数据目录已完全删除。

Q2:恢复备份时出现表不存在错误
  • 原因:备份文件中表名大小写与当前配置冲突。

  • 解决:统一备份文件和目标环境的表名为小写。



http://www.ppmy.cn/ops/160392.html

相关文章

nodejs各版本下载地址 —— 筑梦之路

Index of /dist/ https://nodejs.org/dist/# 北京外国语大学开源镜像站https://mirrors.bfsu.edu.cn/nodejs-release/# 南阳理工学院http://mirror.nyist.edu.cn/nodejs-release/此处主要做个记录

Mermaid绘图技巧:如何在节点文本中实现换行

Mermaid绘图技巧&#xff1a;如何在节点文本中实现换行 在数据可视化领域&#xff0c;Mermaid作为一种强大的图形绘制工具&#xff0c;受到了广泛的关注和应用。它以其简洁的语法和丰富的功能&#xff0c;帮助开发者轻松创建流程图、序列图、甘特图等多种图形。然而&#xff0…

DeepSeek私有化专家 | 云轴科技ZStack入选IDC中国生成式AI市场概览

DeepSeek 火爆全球AI生态圈&#xff0c;并引发企业用户大量私有化部署需求。 国际数据公司IDC近日发文《DeepSeek爆火的背后&#xff0c;大模型/生成式AI市场生态潜在影响引人关注》&#xff0c;认为中国市场DeepSeekAI模型的推出在大模型/生成式AI市场上引起了轰动&#xff0c…

近地面无人机植被定量遥感与生理参数反演

一&#xff1a;近十年近地面无人机植被遥感文献分析&#xff0c;传感器选择&#xff0c;观测方式及质量控制要点 1.1. 近十余年无人机植被遥感文献分析 文献分析软件VOSviewer的使用 无人机植被遥感的重点研究方向、研究机构、科学家家 1.2. 无人机遥感的特点及与卫星遥感的差异…

Qt之多线程处理

在现代应用程序开发中,多线程处理是提高程序性能和响应速度的重要手段。Qt作为一个功能强大的跨平台C++框架,提供了丰富的多线程支持。 Qt多线程基础 Qt中的多线程处理主要依赖于QThread类。QThread类封装了底层的线程启动、运行和终止等细节,每个QThread对象代表一个独立…

百度百舸 DeepSeek 一体机发布,支持昆仑芯 P800 单机 8 卡满血版开箱即用

在私有云环境中成功部署 DeepSeek 满血版并实现性能调优&#xff0c;并不是一件容易的事情。选择合适的 GPU 配置、安装相应的环境、成功部署上线业务、加速推理任务加速、支撑多用户并发 …… 完成业务测试&#xff0c;成功融入生产业务中。 为了帮助企业快速实现 DeepSeek 服…

一种C++的回调方式:播放器回调函数示例

代码&#xff1a; #include <iostream>// 播放器类 class Player {public:// 定义一个抽象的回调类class CallBack {public:virtual void onPlaying(){}; // 播放时的回调virtual void onPaused(){}; // 暂停时的回调virtual void onStopped(){}; // 停止时的回调…

实现能源高效利用、优化能源结构、降低碳排放的智慧能源开源了

简介 AI视频监控平台, 是一款功能强大且简单易用的实时算法视频监控系统。愿景在最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;减少企业级应用约 95%的开发成本&#xff0c;用户仅需在界面上…