关于mysql中root权限丢失的问题

刚听一哥们说执行了一条语句:revoke all on *.* from root@localhost;            --呵呵,当时到底是怎样的心理活动,这是怎样的恨。。。
于是小菜就做了一个实验,心里感觉应该和密码丢失后跳过权限重新设置密码的解决方法是一样的,当然这只是思路,试试才知道。
首先停止数据库[root@MySQL ~]#service mysql3306 stop                              --因为忘记密码所以只能停止服务的方式关闭数据库
Shutting down MySQL.                                       [  OK  ]
[root@mysql ~]#
[root@mysql ~]# /usr/local/mysql/bin/mysqld_safe  --defaults-file=/usr/local/mysql/etc/my.cnf  --skip-grant-tables &                         --跳过校验密码的方式启动数据库[2] 11254
[root@mysql ~]# 160330 16:56:22 mysqld_safe Logging to '/usr/local/mysql/log/err3306.log'.
160330 16:56:22 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data

[root@mysql ~]# ps -ef | grep mysql                                               --查看数据库已然启动
root      11254   6904  0 16:56 pts/2    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
mysql     11771  11254  0 16:56 pts/2    00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --skip-grant-tables --log-error=/usr/local/mysql/log/err3306.log --pid-file=/usr/local/mysql/data/mysql.lz.com.pid --socket=/usr/local/mysql/mysqld3306.sock --port=3306
root      11795   6904  0 16:57 pts/2    00:00:00 grep mysql
[root@mysql ~]# /usr/local/mysql/bin/mysql --socket=/usr/local/mysql/mysqld3306.sock --port=3306                   --不指定用户和密码直接登录数据库
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.17-log Source distribution

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select user();                                                --默认为root用户登录
+--------+
| user() |
+--------+
| root@  |
+--------+
1 row in set (0.00 sec)

root@master 08:41:31 >grant all on *.* to 'root'@'localhost';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement  
在网上找到解决方法:

这个时候我们只需要

flush privileges 一下,在添加用户就OK了,

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

root@master 08:45:59 >grant all on *.* to 'ivan'@'localhost' identified by 'mysql321'  with grant option;
Query OK, 0 rows affected (0.01 sec)

root@master 08:46:24 >flush privileges;
Query OK, 0 rows affected (0.01 sec)

root@master 08:46:31 >quit
Bye
[root@mysql data]# service mysql3306 stop
Shutting down MySQL..160409 08:46:39 mysqld_safe mysqld from pid file /usr/local/mysql/mysql3306.pid ended
                                                           [  OK  ]
[1]+  Done                    /usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql/etc/my.cnf --skip-grant-tables
[root@mysql data]# ps -ef  |grep msyql
root      62709  57953  0 08:46 pts/1    00:00:00 grep msyql
[root@mysql data]# service mysql3306 start
Starting MySQL..                                           [  OK  ]
[root@mysql data]# /usr/local/mysql/bin/mysql -uivan -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.17-log Source distribution

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

ivan@master 08:47:36 >grant all on *.* to 'root'@'localhost' with grant option;
Query OK, 0 rows affected (0.00 sec)

[root@mysql data]# /usr/local/mysql/bin/mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.5.17-log Source distribution

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

root@master 08:49:33 >show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| c_test             |
| ivan               |
| mysql              |
| performance_schema |
| test               |
| webcat             |
+--------------------+
至此一切正常。。。。。啊哈哈哈哈。。。。



网站栏目:关于mysql中root权限丢失的问题
网站路径:http://hbruida.cn/article/gddjos.html