MySQL 5.7.21初始化失败报错:字符集'0.0'无效求助
我之前部署MySQL 5.7时也踩过这个一模一样的坑,这个错误完全是因为你的my.ini配置文件里的字符集参数写错了,导致mysqld进程无法识别这个莫名其妙的'0.0'字符集值。下面是一步步的解决方法:
第一步:找到并打开
my.ini配置文件
你的配置文件路径是C:\ProgramData\MySQL\MySQL Server 5.7\my.ini,注意ProgramData是系统隐藏文件夹,得先在文件管理器里开启「显示隐藏的项目」才能看到。右键用记事本或者Notepad++打开,一定要用管理员权限,不然改完可能存不了。第二步:修正字符集相关配置
在配置文件里搜character-set-server或者collation-server这俩参数,你大概率会看到类似下面的错误配置:character-set-server=0.0 collation-server=0.0把它们改成MySQL支持的有效字符集就行,推荐用兼容性更好的
utf8mb4(能支持emoji),或者经典的utf8:# 推荐的现代配置 character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci或者如果是兼容旧系统的场景:
# 传统兼容配置 character-set-server=utf8 collation-server=utf8_general_ci改完记得保存配置文件。
第三步:清理旧初始化数据,重新执行初始化
- 先检查有没有MySQL服务在跑,有的话打开管理员权限的命令提示符,执行:
net stop MySQL57 - 找到MySQL的数据目录(默认是
C:\ProgramData\MySQL\MySQL Server 5.7\data),把整个data文件夹删掉——反正之前初始化失败了,里面的内容都是无效的。 - 重新跑初始化命令:
"C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld.exe" --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.7\my.ini" --console --initialize-insecure=on
成功的话,日志里不会再出现字符集错误,最后会提示生成了无密码的root账户。
- 先检查有没有MySQL服务在跑,有的话打开管理员权限的命令提示符,执行:
第四步:启动服务并验证
执行命令启动MySQL服务:net start MySQL57然后尝试用root登录:
mysql -u root -p直接按回车(因为用了
--initialize-insecure,root没设密码),能成功进入MySQL命令行就说明问题解决了。
额外提醒
如果改完配置还是报错,检查下配置文件里有没有其他拼写错的字符集参数,比如把character-set-server写成charset-server(虽然MySQL可能兼容,但尽量用官方标准参数名)。另外ini文件对格式敏感,别不小心加了多余的空格或特殊字符。
内容的提问来源于stack exchange,提问作者Satish Chitimoju

