解決mysql刪除用戶 bug的問題
作者在使用mysql添加用戶的時候,發現用戶名給我寫錯瞭
強迫癥的我,必須要改過來,但是發現刪除用戶的時候,命令是成功的
但是在此創建同名用戶的時候,會報錯,網上查瞭很多,說這是mysql的官方bug,不知道是作者水平不夠沒能理解到那個bug,還是真的解決瞭這個問題,下面和大傢分享,歡迎大傢一起討論
刪除瞭user的用戶之後 無法再次創造相同的用戶名
在mysql 數據庫中有一張user表,可以查詢到所有的用戶和用戶信息,刪除裡面的用戶信息以及你賦予那個用戶的什麼權限就能完全的刪除那個用戶瞭
解決方法
註意這裡多用戶的權限進行瞭多次的刪除之後,發現我創建的時候,這個用戶的是% 允許遠程連接的,所以最後一次刪除成功瞭
刷新用戶權限
FLUSH PRIVILEGES;
這個時候你再次創建同名的用戶mysql 就不會報錯瞭
補充:mysql 刪除用戶(兩種實現方案)
drop
drop user XXX;刪除已存在的用戶,默認刪除的是’XXX’@’%’這個用戶,如果還有其他的用戶如’XXX’@’localhost’等,不會一起被刪除。如果要刪除’XXX’@’localhost’,使用drop刪除時需要加上host即drop user ‘XXX’@’localhost’。
delete
delete from user where user=’XXX’ and host=’localhost’;其中XXX為用戶名,localhost為主機名。
區別
drop不僅會將user表中的數據刪除,還會刪除其他權限表的內容。而delete隻刪除user表中的內容,所以使用delete刪除用戶後需要執行FLUSH PRIVILEGES;刷新權限,否則下次使用create語句創建用戶時會報錯。
補充:mysql創建用戶報錯[Err] 1396 – Operation CREATE USER failed for ‘test’@’%’的解決方法
問題:
執行mysql創建用戶語句CREATE USER test IDENTIFIED BY ‘test’; 報錯, 錯誤信息為
[Err] 1396 – Operation CREATE USER failed for ‘test’@’%’
解決步驟:
1.創建過test用戶。
2.查詢後發現無此用戶,則執行FLUSH PRIVILEGES;然後重新執行創建語句。
3.如果還是報錯,則執行drop user ‘test’@’%’;然後重新執行創建語句。
4.創建成功。
可能原因:
1.用戶已存在。
2.使用delete語句刪除用戶後沒有刷新權限。
3.用戶不存在,但是存在該用戶的權限信息。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。
推薦閱讀:
- MySQL在grant時報錯ERROR 1064 (42000)的原因及解決方法
- MySQL數據庫基本SQL語句教程之高級操作
- 全面分析MySQL ERROR 1045出現的原因及解決
- MySQL8.0+版本1045錯誤的問題及解決辦法
- Navicat連接MySQL8.0的正確方法(親測有效)