运维——记一次MySQL无法运行的问题与解决方法(Found option without preceding group in config file xxx at line 1)

2 篇文章 0 订阅
1 篇文章 0 订阅

前言:近期,某项目需要修改MySQL数据库端口,修改完数据库配置以后死活跑不起来,最终发现是因为配置文件保存编码的问题,在此记录一下解决的过程以及发现的问题,以备后续参考。

环境

  • Windows Server 2008 R2
  • Mysql 5.7

(1).出现问题

因实际需求,服务器MySQL的端口需要修改,于是,修改了此路径下的配置文件
C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
到这个路径以后,有一个配置文件,但是需要自行选择打开方式
在这里插入图片描述
然后我就选择了记事本打开
且只将[client][mysqld]下的port=3306改为port=3307,然后直接保存
然后,我直接重启服务MYSQL57,但是服务在停止后就起不来了

(2).尝试将配置文件修改回去

  • 将刚刚修改的地方又改了回去,但是服务照样跑不起来
  • 将备份的文件覆盖回去,服务可以起来
  • 将刚安装完成的配置文件覆盖过去,服务可以起来

(3).查看异常日志

在my.ini的配置文件里有一段异常日志的配置

log-error="xxx.err"

然后找到对应的日志文件,里面并没有发现有启动的日志,说明mysqld直接没有运行起来

(4).尝试手动运行mysqld

进入服务,找到MySQL57,右键-属性,查看可执行文件路径

"C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld.exe" --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.7\my.ini" MySQL57

进入命令提示符,cd到C:\Program Files\MySQL\MySQL Server 5.7\bin\
然后执行以下指令

mysqld.exe --defaults-file=C:\ProgramData\MySQL\MySQL Server 5.7\my.ini

第一个坑就来了,提示如下

mysqld: [ERROR] Could not open required defaults file: C:\ProgramData\MySQL\MySQL
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!

我当时的想法是,我的配置文件里面也没有C:\ProgramData\MySQL\MySQL相关的配置呀,为啥会提示这个
最后摸索了一会儿,发现windows的命令窗口不能这样执行指令…必须在=后面加上双引号,所以把命令改成如下所示重新执行

mysqld.exe --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.7\my.ini"

第二个坑如约而至,提示如下

mysqld: [ERROR] Found option without preceding group in config file C:\ProgramData\MySQL\MySQL Server 5.7\my.ini at line 1!
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!

比较了几个可以跑起来的配置文件,发现开头并没有区别,于是又摸索了一会儿…
最终发现,记事本默认是以'UTF-8'打开的,保存的时候也默认用'UTF-8'保存,导致mysqld读取时发生异常

(5).修改文件编码格式

点击右上角文件-另存为
在这里插入图片描述
发现这里的编码是UTF-8
在这里插入图片描述
将其改为ANSI,然后覆盖保存
在这里插入图片描述
然后重新执行

mysqld.exe --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.7\my.ini"

发现没有出现问题,MySQL可以正常连接上

(6).修改端口配置,再次重启服务

停止mysqld,重新修改配置文件的port项,将配置文件以ANSI编码保存,启动MySQL57服务,启动正常,至此,问题解决。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值