用grant命令爲用戶賦權限之後,登陸時,出現:ERROR 1045 (28000)

ERROR 1045(28000)信息是由於權限的問題。這個ERROR分爲兩種狀況:mysql

第一種:sql

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO),這種狀況是沒有用密碼直接登陸,這時須要輸入密碼數據庫

第二種:ide

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES),這種狀況是用了密碼了,可是,密碼不對或者是本地用這個用戶名和密碼沒有權限鏈接登陸工具

下面主要說一下,針對第二種狀況如何解決:spa

先說一下個人使用場景:首先,在安裝好mysql後利用mysqladmin工具,設置了用戶名root和密碼123456後,利用這個用戶名和密碼,登陸後,進入mysql數據庫,而後,利用:blog

mysql>grant all on openfire.* to mysql@'%' identified by '123456';ip

mysql>flush privileges;it

mysql>exit;table

而後,利用新用戶名mysql和密碼123456登陸:

mysql -umysql -p123456 回車,出現了第二種狀況。

此時,咱們利用root用戶登陸,發現沒有任何問題,而後,咱們輸入如下Sql語句查看下數據庫存儲用戶的表:

mysql>use mysql;

mysql>select host,user from user;

注意: //@"%" 表示對全部非本地主機受權,不包括localhost。不建議設爲本機IP,防止IP變化。

經過這個sql語句查看一下,咱們發現,mysql用戶在本機(localhost或者127.0.0.1)上經過mysql用戶沒法鏈接數據庫,因而咱們再次利用grant從新爲mysql用戶賦予權限

mysql>grant all on openfire.* to mysql@localhost identified by '123456';

mysql>flush privileges;

mysql>exit;

再次利用mysql用戶登陸,這時候能夠成功登陸。個人這種狀況是本機不能用特定用戶鏈接數據庫。

另一種就是密碼錯誤時的狀況:

用戶登陸時,首先會在數據庫user表裏查找這個表,那麼是否是可繞過這張權限表呢。答案是能夠的。咱們先停下mysql服務,service mysqld stop,而後,找到my.cnf文件,在[mysqld]下方,添加:

skip-grant-tables,以下所示:

 

保存後,重啓mysql的服務,而後,登陸時,不輸入密碼,能夠成功登陸。

相關文章
相關標籤/搜索