1. 程式人生 > >windows登入安裝版mysql資料庫ERROR 1045 (28000)的解決方法

windows登入安裝版mysql資料庫ERROR 1045 (28000)的解決方法

在使用mysql資料庫進行遠端登入時遇到了ERROR 1045 (28000): Access denied for user 'root'@'NJ-YF-1407-03' (using password: YES)。 檢查了一下密碼,發現沒有輸錯。那麼到底是怎麼回事呢?

由於mysql服務安裝在ip地址為172.16.210.229的主機上,所及我就遠端登陸了該主機,發現登入命令 mysql   -uroot -p -h 172.16.210.229報了同樣的錯誤,只能使用mysql   -uroot -p -h  127.0.0.1 或者mysql   -uroot -p等預設登入方式登入使用navicat或者heidiSQL等資料庫連線工具亦無法登陸。

在此記錄一下我解決這個問題的過程:

  首先,由於我的mysql是mysql-5.7.17安裝版的,所以網上的那些關於修改my.ini配置檔案的方法就不適用了。所以,解決問題的關鍵落在了使用者許可權上。

1.使用root使用者登入mysql本機,使用預設命令登入(即 mysql -uroot -p) ,不指定主機地址預設登入本地服務。登入後,查詢資料庫名為"mysql"中的表“user”,此表儲存了mysql登入使用者的使用者名稱、密碼、相關許可權等資訊。

mysql> select host,user from user;
+------------+--------------+
| host         | user         |
+------------+--------------+
| localhost | lujx           |
| localhost | mysql.sys |
| localhost | tempuser  |
| localhost | root           |
+------------+---------------+

資料庫中只有root'@'localhost',這就意味著這個root使用者只能在localhost主機上登入,使用遠端登入或者使用-h 172.16.210.229就沒有許可權,所以會被拒絕.所以要想實現在其他主機上登入該mysql服務。

2.解決此類問題有兩種方法

a).修改使用者的host

在mysql本地登入超級許可權賬號後,執行如下命令:

mysql>use mysql;
mysql>update user set host = '%' where user = 'root';

此時root使用者支援任何主機可以登入。

b).建立root@‘%’使用者

使用root超級許可權使用者登入系統後,注意,此處是使用‘root’@‘localhost'方式登入。執行命令

mysql>create user 'root'@'%'  identified by 'yourPassword' ,         yourPassword是你自定義的密碼。再執行命令:

mysql>flush privileges         .用於重新整理生效,

由於我要建立的是一個超級許可權使用者,所以我要授予該使用者最高許可權。執行命令

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'yourPassword' WITH GRANT OPTION;    用於授予'root'@'%'使用者最高許可權。

然後就可以從任何主機登入root賬號了。

當然,如果需要root使用者只能從特定的主機登入,只需要修改建立使用者命令中的主機名即可,例如:指定root使用者只能在172.16.210.121主機登入,則執行以下命令即可:

mysql>create user 'root'@'172.16.210.121'  identified by 'yourPassword' ,         yourPassword是你自定義的密碼。再執行命令:

mysql>flush privileges         .用於重新整理生效,

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.16.210.121' IDENTIFIED BY 'yourPassword' WITH GRANT OPTION;    用於授予'root'@'%'使用者最高許可權。

執行此操作後,'root'@'172.16.210.121'使用者只能在172.16.210.121主機登入遠端mysql服務。