mysql8 启动报错:Error while setting value ‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DI

本文介绍了在MySQL 8.0及以上版本中遇到的关于sql_mode配置的问题及解决方法。主要原因是8.0版本已取消NO_AUTO_CREATE_USER关键字,解决方式是在配置文件中移除该关键字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

错误:

增加sql_mode配置,启动时出现下面错误

[ERROR] [MY-000077] [Server] /usr/sbin/mysqld: Error while setting value 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' to 'sql_mode'.

如何解决:

8.0以上已经取消了 NO_AUTO_CREATE_USER 这个关键字,在mysql.ini / my.cnf中的sql_mode中删掉这个关键字即可

<think>嗯,用户在使用`mysqld --initialize --console`初始化MySQL时遇到了几个错误。首先,我需要分析这些错误信息。第一个错误是关于`sql_mode`的设置问题,提示在设置值时有错误。用户提供的配置文件中,`sql_mode`被设置为`STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION`,但在错误日志中显示的值后面多了一个逗号,可能是语法问题。 然后,第二个错误是无法打开`mysql-error.log`,权限被拒绝。这可能是因为用户没有在指定的路径下创建或写入日志文件的权限,或者路径不存在。第三个错误是数据目录不可用,提示需要删除服务器添加的文件。这可能是因为之前初始化失败残留了文件,或者目录权限问题。 接下来,用户提供的配置文件中的路径是`D:/MySQL/mysql-8.0.33-winx64`,但用户实际使用的是9.1.0版本,路径应该是`D:\MySQL\mysql-9.1.0-winx64`,这显然存在版本路径不一致的问题,导致MySQL尝试访问错误目录下的data文件夹,从而引发权限和数据目录错误。 此外,用户可能在配置文件中使用了旧版本的路径,而实际安装的是9.1.0版本,导致路径不匹配。另外,权限问题可能涉及到Windows的文件夹权限设置,用户需要确保MySQL服务账户有权限读写相关目录。 可能的解决步骤包括:检查并修正`sql_mode`的语法错误,去除多余的逗号;确保所有路径指向正确的9.1.0版本安装目录;检查并设置正确的目录权限;清理旧的data目录或确保其为空;以管理员权限运行初始化命令等。此外,用户需要注意MySQL 9.1.0是否真实存在,因为当前主流版本可能较低,可能存在版本号输入错误的情况。</think>以下是针对你遇到的MySQL初始化错误的分析和解决方案(分步骤说明): --- ### **错误诊断** #### **错误1:sql_mode配置异常** ```log [ERROR] [MY-000077] [Server] Error while setting value 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,' to 'sql_mode' ``` **原因**: - **多余逗号**:配置文件中的`sql_mode`参数末尾存在多余逗号,导致解析失败 - **配置格式**:MySQL 8.0+ 对配置语法严格性提升 #### **错误2:日志文件权限拒绝** ```log [ERROR] [MY-010187] Could not open file 'D:\MySQL\mysql-8.0.33-winx64\data\mysql-error.log' for error logging: Permission denied ``` **原因**: - **路径版本不匹配**:实际安装路径为`mysql-9.1.0-winx64`,但配置文件指向`mysql-8.0.33-winx64` - **目录权限不足**:Windows账户对目标目录无写入权限 #### **错误3:数据目录不可用** ```log [ERROR] [MY-013236] The designated data directory D:/MySQL/mysql-8.0.33-winx64/data is unusable ``` **原因**: - **残留文件冲突**:之前初始化失败导致`data`目录存在残留文件 - **目录所有权**:旧MySQL实例未完全卸载,文件被系统锁定 --- ### **解决方案**(按优先级排序) #### **步骤1:修正sql_mode配置** 1. 打开`my.ini`配置文件 2. 找到`sql_mode`参数,**删除末尾逗号**: ```ini sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION ``` 改为 ↓ ```ini sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION ``` --- #### **步骤2:统一文件路径版本** 1. 修改所有路径配置项,确保与**实际安装路径**一致: ```ini basedir = D:/MySQL/mysql-9.1.0-winx64 datadir = D:/MySQL/mysql-9.1.0-winx64/data log_error = D:/MySQL/mysql-9.1.0-winx64/data/mysql-error.log slow_query_log_file = D:/MySQL/mysql-9.1.0-winx64/mysql-slow.log ``` 2. **删除旧`data`目录**: ```bash rmdir /s /q D:\MySQL\mysql-8.0.33-winx64\data ``` --- #### **步骤3:修复目录权限** 1. 右键点击`D:\MySQL\mysql-9.1.0-winx64`目录 → 属性 → 安全 2. 添加当前用户(或`Everyone`)的**完全控制权限** 3. 勾选"替换所有子对象的权限项" → 应用 --- #### **步骤4:以管理员身份执行初始化** ```cmd # 进入MySQL安装目录 cd D:\MySQL\mysql-9.1.0-winx64\bin # 清理旧数据(如果存在) del /f /q ..\data\* # 执行初始化命令(以管理员权限运行CMD) mysqld --initialize --console --basedir="D:\MySQL\mysql-9.1.0-winx64" --datadir="D:\MySQL\mysql-9.1.0-winx64\data" ``` --- ### **操作验证** 1. 观察控制台输出,成功时会显示**临时root密码**(格式如): ``` [Note] A temporary password is generated for root@localhost: 3s#fq_AKq9aT ``` 2. 检查`data`目录是否生成以下关键文件: - `ibdata1`(InnoDB系统表空间) - `mysql.ibd`(系统表) - `auto.cnf`(服务器UUID) --- ### **注意事项** 1. **版本兼容性**:MySQL 9.1.0目前不存在(截至2024年最新稳定版为8.4),请确认下载来源合法性 2. **防火墙设置**:初始化期间暂时关闭杀毒软件/防火墙 3. **错误日志定位**:若仍失败,直接查看`data`目录下新生成的`.err`文件获取详细错误信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值