在系统环境为docker,centos7,ubuntu,debian在官方文档里面都应该是归类为unix或类unix系统(Unix and Unix-Like Systems)
所以正确的重置mysql8.0的方法如下:
1、停止mysql服务
$> kill `cat /mysql-data-directory/host_name.pid`
2、创建一个mysql-init文件,内容应该为:
建议放在/tmp下,如果是用mysql用户启动,那mysql要有读该文件的权限
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
3、加上init-file启动mysql实例
注意:我这里配置文件用的是默认的/etc/my.cnf,所以不用特殊指明
mysqld --user=mysql --init-file=/home/me/mysql-init
4、如果成功启动,就可以删除init-file了,测试一下有没有将密码修改成功
如果成功重置,可以按1步中的方式停止mysql服务,后边正常启动即可!
如果是docker容器中遇到这情况,那可以利用entrypoint优先级的方式用/bin/bash或/bin/sh方式先进入容器,例如:
docker run -it --rm --entrypoint /bin/bash mysql:8.0.27
这样启动的容器不会运行mysql的entrypoint.sh
后续的步骤和上边处理方式一样!
重置方式参考来源于官网:
https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html
网友评论