用grant命令為用戶賦權限以后,登錄時,出現:ERROR 1045 (28000)


ERROR 1045(28000)信息是因為權限的問題。這個ERROR分為兩種情況:

第一種:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO),這種情況是沒有用密碼直接登錄,這時需要輸入密碼

第二種:

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

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

先說一下我的使用場景:首先,在安裝好mysql后利用mysqladmin工具,設置了用戶名root和密碼123456后,利用這個用戶名和密碼,登錄后,進入mysql數據庫,然后,利用:

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

mysql>flush privileges;

mysql>exit;

然后,利用新用戶名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的服務,然后,登錄時,不輸入密碼,可以成功登錄。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM