Mysql8.0修改配置参数lower_case_table_names

现象

今天在配置一个环境的数据库,所使用的系统要求该数据库 lower_case_table_names = 1 (对数据库表明、列名大小写不敏感)

我看了一下,在 Windows 上,默认值为 1。在 macOS 上,默认值是 2。在 Linux 上,不支持值 2;服 务器会将该值设置为 0。

那0是不符合我们需求的,于是我打开my.cnf进行添加配置。

重新启动时报错如下

    2024-11-28T10:16:01.439651Z 1 [ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server ('1') and data dictionary ('0').
    2024-11-28T10:16:01.439773Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
    2024-11-28T10:16:01.439790Z 0 [ERROR] [MY-010119] [Server] Aborting

解决过程

Different lower_case_table_names settings for server ('1') and data dictionary ('0').

服务器(“1”)和数据字典(“0”)的lower_case_table_names设置不同。

难道是还有别的要改吗?

搜了一下,发现已经初始化过的mysql8.0是不允许修改该参数的,如果需要修改则需要重新初始化

还好这是个空环境,那就重新初始化mysql吧

重新初始化

停止mysql服务

    sudo systemctl stop mysql

移除现有的数据目录

    sudo rm -rf /var/lib/mysql/*

使用 mysqld --initialize 命令重新初始化 MySQL 数据目录

    sudo mysqld --initialize --user=mysql

启动 MySQL 服务以应用新的配置

    sudo systemctl start mysql

使用临时密码登录 MySQL 并更改密码。首先找到临时密码

    sudo grep 'temporary password' /var/log/mysql/error.log

使用临时密码登录

    mysql -u root -p

登录成功后在 MySQL 下更改密码

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword';
    FLUSH PRIVILEGES;

至此就可以了。

posted @ 2024-12-06 15:06  地球上的张先生  阅读(6)  评论(0编辑  收藏  举报