2017-01-24 364 views
5

我已經嘗試了所有已找到的修復程序,並且無法更改我的根MySQL密碼。在外殼,如果我在mysql -u root型,我得到MySQL錯誤:#1045 - 訪問被拒絕用戶'root'@'localhost'(使用密碼:是)

Access denied for user 'root'@'localhost' (using password: NO)

當我去到PHP MyAdmin,我得到這個:

#1045 - Access denied for user 'root'@'localhost' (using password: YES)

這一切開始時我是被迫進入一個新的密碼MySQL的。我不知道如何解決這個問題,我很絕望。

謝謝。

+2

你有沒有試過** mysql -u root -p **在shell中 –

+1

可能重複[MySQL錯誤1045(28000):訪問拒絕用戶'bill'@'localhost'(使用password:YES)]( http://stackoverflow.com/questions/10299148/mysql-error-1045-28000-access-denied-for-user-billlocalhost-using-passw) – rkosegi

+1

好吧,你的密碼是錯誤的。就那麼簡單。如何解決它:使用新的,正確的。 –

回答

1
First Run CMD mode 
E:\xampp\mysql\bin>mysql.exe -u root -p 

Screenshot: 

enter image description here

+0

也試過了。我最終安裝了一個新版本的XAMPP,並做到了這一點。我失去了我的數據庫,但是那樣做了。 – SandyS

+0

由於MySQL的風格和版本太多,因此如果您確定所使用的風味和版本,那麼在尋求幫助時會很有幫助。如果它不起作用,錯誤消息有助於獲得更多幫助。我已經添加了特定於XAMPP的答案。 –

5

GENERIC MYSQL信息

首先,閱讀MySQL手冊:https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

的步驟將告訴你如何關閉該服務,並與一個壓倒一切的命令來啓動它不需要密碼,那麼你重置密碼。從手冊:

停止MySQL服務器,然後使用--skip-grant-tables選項重新啓動它。這使任何人都可以在沒有密碼和所有權限的情況下進行連接,並禁用帳戶管理語句,如ALTER USERSET PASSWORD。由於這是不安全的,因此您可能希望將--skip-grant-tables--skip-networking一起使用,以防止遠程客戶端連接。

使用mysql客戶端連接到MySQL服務器;

shell> mysql

在mysql客戶端,告訴服務器重載授權表,使帳戶管理報表工作:

mysql> FLUSH PRIVILEGES;

因爲服務器開始 --skip-grant-tables不需要密碼

然後更改'root'@'localhost'帳戶密碼。將密碼替換爲您要使用的密碼。要更改具有不同主機名部分的root帳戶的密碼,請修改說明以使用該主機名。

的MySQL 5.7.6及更高版本:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

的MySQL 5.7.5及更早版本:

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

用戶表

或者直接:

UPDATE mysql.user SET password=PASSWORD('mynewpassword') WHERE user='root';

XAMPP SPECIFIC

停止MySQL服務。打開一個命令窗口。更改爲XAMPP MySQL目錄:

> cd \xampp\mysql\bin\

沒有安全運行服務(注意,您正在運行的mysqld,而不是MySQL的):

> mysqld.exe --skip-grant-tables

MySQL的服務將在此窗口中運行,打開另一個命令窗口並切換到XAMPP MySQL目錄:

> cd \xampp\mysql\bin\

運行MySQL客戶端:

> mysql

更新密碼:

mysql> UPDATE mysql.user SET password=PASSWORD('mynewpassword') WHERE user='root';

退出MySQL的:

mysql> \q

使用任務管理器取消mysqld.exe仍在運行。重新啓動mysql服務。

+0

我也試過這個 - 它沒有工作。 – SandyS

+0

我試圖改變根據您的建議,但不起作用的MySQL密碼。當我運行命令來更改密碼時,出現此錯誤:'ERROR 1290(HY000):MySQL服務器正在運行--skip-grant-tables選項,因此它不能執行此語句「 –

+0

如果您收到錯誤1290,通常是因爲你沒有做FLUSH PRIVILEGES命令。這將重新激活帳戶管理。如果您在使用非標準版本的MySQL時遇到問題(比如MariaDB給出Error 1131),您可以直接更新用戶表,而不是使用帳戶管理語句:UPDATE mysql.user set password = PASSWORD('mynewpassword')WHERE user ='root';' –

相關問題