记录一次重置数据库root用户的过程

服务器的mysql突然连接不上去了,密码也忘记了。只能重新设置密码了

1、使用如下指令打开mysql数据库配置文件(具体的文件路径以实际情况为准)

vim /etc/my.cnf
在虚拟机中直接输入即可
添加如下命令
skip-grant-tables
skip-networking
直接复制进文件即可,加入之后:wq退出并保存
  • skip-grant-tables 用于忽略授权表,取消数据库的授权
  • skip-networking 用于关闭数据库网络功能,避免其他用户不输入口令远程连接我们的数据库。
  • 然后重新启动MySQL服务。
2、登录数据库
mysql -uroot -proot 
输入密码123456

3、进入到mysql。然后选择mysql这个数据库
  use mysql;
看一下root还存在吗
select user,host from user;
在就更新密码
update mysql.user  set  password=password('123456')  where  user='root';
不在就重新创建用户
create user 'root'@'localhost' identified by '123456';


localhost表示本地,mysql登入的时候,不用指定ip登入


此步骤可能会报以下错误,没报错的跳过(直接到权限那一步),用一下方法解决:


ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this stateme

输入:

flush privileges;

此时再次重新创建用户:

create user 'root'@'localhost' identified by '123456';

再次报错,这步没报错的也是直接跳到赋予权限那一步,报错的以下操作:

drop user 'root'@'localhost';

再次重新创建用户:

create user 'root'@'localhost' identified by '123456';

结果没有再报错,root用户创建成功。
下面赋予root权限:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; #赋予所有库所有表操作权限
mysql> flush privileges;
mysql> exit;

到这一步没有报错,表明已经成功了,不过要把最开始的配置文件恢复:

vim /etc/my.cnf

删除配置文件中的:

skip-grant-tables

退出,重启mysql:

/etc/init.d/mysqld restart





posted @ 2023-03-16 22:49  SadicZhou  阅读(65)  评论(0编辑  收藏  举报