今天發現一個奇怪的問題把mysql重新安裝之後發現再去連接mysql提示1045錯誤了,無法正常連接mysql數據庫了,下面我們一起來看此問題解決辦法。
之前因為沒有正常關機 mysql 服務無法正常啟動。後來重新安裝了之後還是不能進入root賬戶提示1045錯誤。
解決方法:
1、停止服務
2、修改my.ini,找到【mysqld】,在其下加上一行 skip-grant-tables
3、啟動mysql服務。
這樣就可以進入了。進入之後修改 mysql庫下面的user 表裡面的root 密碼改為空。
然後去掉 skip-grant-tables 重啟mysql。 把之前的庫都拷貝到新的數據庫路徑。網站即可正常訪問。
如果還是不行可參考下面方法嘗試一下
根據網上的介紹,通過命令
代碼如下 復制代碼mysql> use mysql; mysql> select host,user from user;
得到如下結果 +---------------+------+ | host | user | +---------------+------+ | localhost | root | +---------------+------+ 5 rows in set (0.00 sec)
發現root用戶僅允許本地(localhost)登錄
,如果要遠程登錄該mysql服務器的話,就需要新建一個普通權限的用戶,新建用戶使用如下命令:
代碼如下 復制代碼mysql> grant select,update,insert,delete on mas.* to duan@localhost identified by "123456";
這句命令的意思是:新建用戶duan,並且只允許該用戶在本地(localhost)登錄,密碼是123456,並且賦予它對mas庫中所有表select,update,insert的權限。我們在這有一個mas庫,所以用mas.*代表mas庫下的所有表。現在該duan用戶,已經可以登錄mysql了,但是也還是只能本地登錄。
若要duan用戶可以遠程登錄mysql,則還需要如下命令:
代碼如下 復制代碼mysql> update user set host = '%' where user = 'duan';
現在我們再查看mysql的管理庫:
mysql> select host,user from user; +-----------+------+ | host | user | +-----------+------+ | % | duan | | localhost | root | +-----------+------+ 5 rows in set (0.00 sec) 這時,在MySQL-Front上新建連接,輸入連接名,遠端的Linux的IP地址,輸入用戶名duan和密碼123456,選擇連接端口,mysql默認的是3306,還是連接不上。
經過多番查找,發現還需要執行
代碼如下 復制代碼mysql> flush privileges;
把緩存flush後,終於大功告成了。 因為使用update語句修改用戶記錄,還需要FLUSH語句告訴服務器重載授權表。當你使用GRANT和REVOKE語句時,表自動重載,而你直接修改授權表時不是。
所以更簡便的方法是
mysql> grant select,update,insert,delete on mas.* to duan@“%” identified by "123456";