mysql5.6.38誤刪除root用戶後的一系列問題及解決辦法

首先要知道,root@'localhost'是mysql自帶的用戶,咱們用drop刪除時,只是從mysql.user表裏面刪除了這個用戶,重新加回來就好了。mysql

首次恢復

1. 關閉當前mysql實例
2.使用跳過認證的方式啓動mysql實例sql

# mysqld_safe --skip-grant-tables &

3. 免密登陸mysql數據庫

這時能夠免密進入mysql,並且這時的身份就是root。服務器

4.開始恢復ide

mysql>use mysql mysql> insert into user set user='root',ssl_cipher='',x509_issuer='',x509_subject=''; update user set Host='localhost',select_priv='y', insert_priv='y',update_priv='y',Alter_priv='y',delete_priv='y',create_priv='y',drop_priv='y',reload_priv='y',shutdown_priv='y',Process_priv='y',file_priv='y',grant_priv='y',References_priv='y',index_priv='y',create_user_priv='y',show_db_priv='y',super_priv='y',create_tmp_table_priv='y',Lock_tables_priv='y',execute_priv='y',repl_slave_priv='y',repl_client_priv='y',create_view_priv='y',show_view_priv='y',create_routine_priv='y',alter_routine_priv='y',create_user_priv='y' where user='root';commit;

五、退出數據庫,修改密碼便可spa

恢復之後的問題

使用grant時,報錯以下:code

mysql> grant all on *.* to root@'10.0.0.%' identified by '123456'; ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

從新對root@'localhost'受權

一開始覺得是$basedir/的權限被人搞亂了,去看了一下,徹底沒有錯誤,因此猜想,是否是恢復root用戶時,沒有賦予root@'localhost'正確的權限。blog

接下來就是恢復其正確的管理員權限:ip

1中止mysql服務器。使用skip-grant-tables 登錄。ssl

2 手動修改用戶的權限。使其能夠設置權限。

UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';

3 刷新緩衝區

FLUSH PRIVILEGES;

4 而後你就可使用

GRANT ALL ON *.* TO 'root'@'localhost';

5 可使用以下命令產看用戶權限

select * from mysql.user\G

至此,應該能夠正常使用grant命令了。

相關文章
相關標籤/搜索