一、現象
1.今天登上數據庫,用 mysql -uroot -proot 登錄(本人密碼是root),出現:
2.然后嘗試 無密碼登錄,竟然登錄成功:
3.查看mysql中的數據庫,發現只有兩個系統表了。
二、原因
因為mysql數據庫的user表里,存在用戶名為空的賬戶即匿名賬戶,導致登錄的時候是雖然用的是root,但實際是匿名登錄的,通過錯誤提示里的''@'localhost'可以看出來
三、解決辦法
1.關閉mysql
# service mysql stop
2.屏蔽權限
# mysqld_safe --skip-grant-table
屏幕出現: Starting demo from .....
3.新開起一個終端輸入
# mysql -u root mysql
mysql> delete from user where USER='';
mysql> FLUSH PRIVILEGES; //記得要這句話,否則如果關閉先前的終端,又會出現原來的錯誤
mysql> \q