恢复Mysql丢失的root用户权限

 

今天安装了某个程序时, 由于程序很傻X的 新建了一个 root@localhost 用户 并把 root权限全部改为了 no
  这下 我也 傻X 了.服务器上所有程序都崩溃了. 此时即使用root用户登陆进去也无法再修改权限了.
  赶紧 service mysqld stop 先停掉mysql 然后用安全模式 启动mysql
  /usr/bin/mysqld_safe --skip-grant-tables
  root 登陆 ..不需要密码
  进入 mysql 这个数据库(注意数据库名是mysql) ,把user表的 root@localhost 干掉 或者 把权限都改成yes 即可.
  然后重启 mysql服务
  权限恢复...

方法一
修改MySQL的登录设置:
#在[mysqld]的段中加上一句:skip-grant-tables
vi /etc/my.cnf
例如:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
skip-grant-tables
#重新启动mysqld
mysql安装目录/mysql
mysql> USE mysql ;
mysql> UPDATE user SET Password = password ( 'password' ) WHERE User = 'root' ;
mysql> flush privileges ;
GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY 'password' WITH GRANT OPTION;
mysql> flush privileges ;


方法二
#关掉mysql
service mysqld stop

#忽略权限表 进入mysql
mysql安装目录/bin/mysqld_safe --skip-grant-tables &

#进入
#mysql -uroot -p 或者mysql安装目录/bin/mysql
#一下操作更具实际情况选择
INSERT INTO mysql.user (Host,User,Password) VALUES('localhost','root', PASSWORD('123456'));
UPDATE mysql.user set password='123456' where user='root';
GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;

#启动mysql
service mysqld start

原文地址:https://www.cnblogs.com/kxdblog/p/4034269.html