MySQL忘記root用戶密碼以及誤刪除所有用戶解決方法

MySQL用戶密碼忘記/丟失後的處理

mysql用戶全部誤刪除恢復方法

問題:

把mysql中的用戶全部刪除後如何恢復?

解決方法一:

重新初始化數據庫

說明:
如果自己的測試環境使用此方法還可以,但是如果刪除的是生產環境中的數據庫用戶,此方法就無法使用了。

解決方法二:

#關掉數據庫
/etc/init.d/mysqld stop
Shutting down MySQL.. SUCCESS!

#無視用戶權限表啓動mysql
mysqld_safe --skip-grant-tables --skip-networking &
[1] 8158

#然後登錄到數據庫
mysql
#這裏因爲跳過用戶表所以可以不用指定用戶和密碼就能登錄進來

#進入mysql庫
mysql> use mysql;

#添加用戶並賦予密碼
insert into user (user,host,password,ssl_cipher,x509_issuer,x509_subject) values('root','localhost',PASSWORD('123'),'','','');
#mysql裏自帶的函數

#關閉、開啓數據庫
/etc/init.d/mysqld stop
/etc/init.d/mysqld start
Starting MySQL. SUCCESS!

#登錄數據庫
mysql -uroot -p123

#給用戶授權:看下面的問題二
insert into mysql.user values ('localhost','root',PASSWORD('123'),
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'','','','',0,0,0,0,'mysql_native_password','','N');
  • 問題一:上面使用的參數說明
 --skip-grant-tables   #使用連接層驗證模塊

跳過權限表,可以不用輸入密碼就能用客戶端連接,非常危險配合 --skip-networking參數使用,如下圖。
Alt text

 --skip-networking

拒絕外部網絡隨意連接,只能通過本地socket文件連接,安全!

  • 問題二:爲什麼要授權用戶權限?
    查看用戶權限表
mysql> select * from mysql.user\G
*************************** 1. row ***************************
                  Host: localhost
                  User: root
              Password: *23AE809DDACAF96AF0FD78ED04B6A265E05AA257
           Select_priv: Y
           Insert_priv: Y
           Update_priv: Y
           Delete_priv: Y
           Create_priv: Y
             Drop_priv: Y
           Reload_priv: Y           #<<--發現這裏所有的權限都是yes
         Shutdown_priv: Y
          Process_priv: Y

在找到剛剛創建的用戶:

*************************** 4. row ***************************
                  Host: 10.0.0.51
                  User: root
              Password: *23AE809DDACAF96AF0FD78ED04B6A265E05AA257
           Select_priv: N
           Insert_priv: N
           Update_priv: N
           Delete_priv: N
           Create_priv: N
             Drop_priv: N
           Reload_priv: N #<<--發現這裏所有的權限都no
#所以在添加用戶密碼後必須更改權限

忘記root密碼的解決方法

#關閉數據庫
/etc/init.d/mysqld stop

#啓動數據庫
mysqld_safe --skip-grant-tables --skip-networking &

#進入mysql庫
use mysql;

#修改root用戶密碼
mysql> update user set password=PASSWORD('123') where user='root' and host='localhost';

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章