引言: Mysql是我们经常使用的数据库,偶尔也会忘记Mysql的root密码,那该如何重置呢?本文将简要总结其过程。
1. 环境介绍
Mysql 5.7, 或者 Mariadb对应的10.x版本等,当前可以正常登陆到服务器上,笔者所使用的服务器OS为Centos 7.2, 数据库为mariadb
2. 修复步骤
2.1 查找mysqlsafe的进程,并kill掉该进程
>>> ps -ef | grep mysql
从结果中,可以看到mysqld_safe的进程id
尝试kill其进程, kill 4605.
如果顺利kill掉进程就可以继续下一步,如果kill不掉进程,即重新查询之时,其依然存在,则只能先停掉mysql数据库
>>> systemctl stop mariadb
2.2 启动mysqd_safe进程
>> mysqld_safe --skip-grant-tables &
从结果中,可以发现进程已经正常启动了。
2.3 登陆mysql,无需输入密码,直接点击回车即可
>> mysql -u root -p
当其提示输入密码之时,直接回车确认即可登录mysql数据库。
>> use mysql
>> update user set password=PASSWORD('123456') where user='root'
>> flush privileges;
2.4 没有授权给特定用户特定数据库的远程访问权限时的问题
如果你没有设置远程登陆的权限, 你将会看到如下错误信息:
2.5 创建数据库
>> create database crawler default charset utf8 collate utf8_general_ci;
2.6 对于特定用户授予权限
>> grant all privileges on `databasename`.* to 'username'@'%' identified by '1234567';
>> flush privileges;
2.7 查看当前用户是否可以进行远程访问
>> use mysql;
>> select Host, User from user;
如果不是的话,可以基于如下SQL进行更新设置:
>> update user set host = '%' where user = 'username'
3. MySQL 8.0下的问题总结
问题1: 按照正常安装MySQL 8.0之后,进行连接,出现如下问题
解决办法,重置一下密码:
> ALTER USER 'bladestone'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
注意这里的是 with mysql_native_password, 使用native mysql认证方式。
4. 总结
经常发生的事情记录下来就是最好的练习。