温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-08-11 22:57:34 来源:ITPUB博客 阅读:133 作者:mohan213 栏目:MySQL数据库
刚听一哥们说执行了一条语句: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             |
+--------------------+
至此一切正常。。。。。啊哈哈哈哈。。。。


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI