创建数据目录

admin

Linux 安装 MySQL 8.0:详细配置大小写忽略指南 **

在 Linux 系统环境下安装 MySQL 8.0 时,许多开发者和运维人员常会遇到一个棘手的问题:Linux 文件系统默认是区分大小写的,而 MySQL 在 Linux 上默认也是区分表名大小写的,这通常会导致在 Windows 或 macOS 上能正常运行的程序,迁移到 Linux 服务器后报错,提示 Table 'database_name.table_name' doesn't exist

为了解决这个问题,我们需要在安装或初始化 MySQL 时,开启“大小写忽略”模式,本文将详细介绍如何在 Linux 下安装 MySQL 8.0 并配置大小写不敏感。

创建数据目录

理解参数 lower_case_table_names

在开始之前,我们需要了解核心参数的含义:

  • 0:区分大小写(Linux 默认值)。
  • 1:不区分大小写(即表名存储为小写,比较时不区分大小写)。

安装 MySQL 8.0 并配置大小写忽略

配置该参数的最佳时机是在初始化数据库阶段,如果在数据库已经运行后再修改,通常会导致无法启动。

下载并解压(假设使用通用二进制包)

从 MySQL 官网下载 Linux 版本的压缩包,并解压到指定目录(/usr/local/mysql)。

初始化数据库(关键步骤)

在运行初始化命令时,直接添加 --lower-case-table-names=1 参数。

cd /usr/local/mysql
mkdir -p data
# 初始化数据库,设置 root 初始密码
# 注意:在命令末尾添加 --lower-case-table-names=1
./bin/mysqld --initialize --user=mysql --lower-case-table-names=1 --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

注意:如果你的系统已经安装过 MySQL 且数据目录不为空,直接修改 my.cnf 配置文件通常无效,必须执行上述初始化命令并清空数据目录。

修改配置文件(可选)

如果你不想在命令行中添加参数,也可以在配置文件中添加,但前提依然是全新的空数据目录

编辑 /etc/my.cnf 文件,在 [mysqld] 区域下添加:

[mysqld]
lower_case_table_names=1

启动 MySQL 服务

配置完成后,使用 systemctl 启动服务:

systemctl start mysqld
systemctl enable mysqld

验证配置是否生效

启动成功后,登录 MySQL 并执行以下命令查看变量值:

mysql -u root -p
SHOW VARIABLES LIKE 'lower_case_table_names';

如果返回的值为 1,则说明 Linux 安装 MySQL 8.0 的大小写忽略配置成功。

常见问题与总结

  1. 为何不能在安装后修改? MySQL 官方文档明确指出,lower_case_table_names 参数必须在数据目录为空时设置,如果在已有数据的数据库中修改此值,会导致 MySQL 无法识别已存在的表文件。

  2. 生产环境建议 如果项目开发环境和生产环境不一致,建议统一

文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码