2012-01-09 121 views
18

我在redhat linux上安裝了MySQL服務器5。我無法以超級用戶身份登錄,因此我無法更改root密碼。如何更改mysql的root密碼

mysql -u root -p 
Enter password: <blank> 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' 
(using password: NO) 

當我嘗試設置一個這樣的:

mysqladmin -u root password 'newpass' 

我得到一個錯誤:

mysqladmin: connect to server at 'localhost' failed 
error: 'Access denied for user 'root'@'localhost' 
(using password: NO)' 

彷彿有根密碼設置。

我也試圖重新使用

/sbin/service mysqld start --skip-grant-tables 

然後使密碼(描述here):

mysql> UPDATE mysql.user SET Password=PASSWORD('newpass')  
-> WHERE User='root'; 
ERROR 1142 (42000): UPDATE command denied to user ''@'localhost' for table 'user' 

我甚至卸載的MySQL服務器(使用YUM),然後重新安裝,但該沒有幫助。

如何強制重置根密碼?

+0

檢查您的mysqld是否已安裝,啓用,並使用命令:'sudo service mysqld status'。 – 2015-12-31 11:13:10

回答

4

我刪除了MySQL安裝並刪除了數據文件,然後重新安裝它。

然後我可以設置root密碼。一旦你設置了根密碼。如果你不知道它,mysqladmin不會讓你重置它。

復位的話,你得有超過mysqld的是如何執行的所有權,並給它一個init文件來修改root密碼: https://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html

+1

請問您是否可以更正鏈接 – ihebiheb 2015-10-26 16:00:45

6

默認情況下,root用戶密碼爲空字符串。

(using password: NO)表示沒有密碼。

您是否嘗試從另一個系統登錄?我想你只能在本地以root用戶身份登錄。

+0

爲了成爲mysql服務器中的根,我是否需要neet作爲系統的根? – yossi 2012-01-09 14:06:38

+0

我不確定,但我不這麼認爲。不幸的是,我從來沒有使用紅帽......編輯:但你爲什麼不試試呢? – danijar 2012-01-09 14:09:58

+0

請注意,如果您想嘗試使用無密碼登錄,則應該避免在命令行中完全指定'-p'。 – 2012-01-09 14:17:19

6

一種方法是將UPDATE mysql.user SET Password=PASSWORD('newpass') WHERE User='root';保存到文件中,然後用--init-file=FILENAME手動啓動mysqld。一旦服務器啓動,它應該重置您的密碼,然後您應該能夠登錄。之後,您應該關閉服務器並正常啓動它。

+1

好主,爲什麼會有人給我發現工作的唯一解決方案-1。 init sql文件是我可以覆蓋mysql root用戶密碼並能夠使用它的唯一方法。這是一個恥辱,你需要在新安裝的軟件上進行這種操作,但最好有一個**可靠的解決方法。 – 2015-06-19 10:46:29

+2

'sudo mysql service stop && echo「UPDATE mysql.user SET Password = PASSWORD('newpass')WHERE User ='root';」 > /tmp/reset.sql && sudo /etc/init.d/mysql start --init-file = /tmp/setup.sql' – 2016-07-01 22:12:34

3

從你的命令刪除-p。 -p強制提示輸入密碼。

用途: mysql -u root

這將解決您的問題。

+2

這隻適用於沒有root密碼的情況。如果已設置root密碼,則必須提供。 – 2015-06-19 17:47:39

2

這幫助我在Windows與MySQL服務器5.6。請確保您更改mysqld路徑指向您已經安裝了MySQL服務器時,對我來說是"C:\Program Files\mysql\MySQL Server 5.6\bin\mysqld.exe"

  1. 登錄到你的系統管理員身份。

  2. 停止MySQL服務器,如果它正在運行。對於作爲Windows服務運行的服務器 ,請轉到服務管理器: 從開始菜單中,選擇控制面板,然後選擇 管理工具,然後選擇服務。在列表中找到MySQL 服務並停止它。

    如果您的服務器未作爲服務運行,則可能需要使用 任務管理器強制其停止。

  3. 創建一個包含以下語句的文本文件。 將密碼替換爲您要使用的密碼。

    UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root'; 
    FLUSH PRIVILEGES; 
    

    在一行中寫入UPDATE和FLUSH語句。 UPDATE語句重置所有root帳戶的密碼,並且FLUSH語句會通知服務器將授權表重新加載到內存中,以便通知密碼更改。

  4. 保存文件。對於這個例子,該文件將被命名爲C:\mysql-init.txt

  5. 打開控制檯窗口進入命令提示符:從開始菜單中選擇運行,然後輸入cmd作爲要運行的命令。

  6. 開始用特殊--init-file選項MySQL服務器(注意在選項值反斜槓加倍):

    C:\> C:\mysql\bin\mysqld --init-file=C:\\mysql-init.txt 
    

    如果你安裝了MySQL到C以外的其他位置:\ mysql,相應地調整命令。

    服務器在啓動時執行由--init-file選項指定的文件內容,並更改每個root帳戶的密碼。

    如果希望服務器輸出顯示在控制檯窗口中而不是日誌文件中,還可以將--console選項添加到該命令。

    如果你使用MySQL安裝嚮導安裝了MySQL,你可能需要指定一個--defaults-file選項:

    C:\> "C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld.exe" 
        --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.5\\my.ini" 
        --init-file=C:\\mysql-init.txt 
    

    適當--defaults文件設置可以使用服務管理器中找到:從開始菜單中選擇控制面板,然後選擇管理工具,然後選擇服務。在列表中找到MySQL服務,右鍵單擊它,然後選擇「屬性」選項。可執行文件的路徑字段包含--defaults-file設置。

  7. 服務器啓動成功後,刪除C:\ mysql-init.txt。

http://docs.oracle.com/cd/E17952_01/refman-5.5-en/resetting-permissions.html

2

試着這樣做:

mysql -u root 

然後:

mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') 
    ->     WHERE User='root'; 

mysql> FLUSH PRIVILEGES; 

工作的罰款我!

2

可能有點晚了這裏,但這裏是我做過什麼:

創建文件resetpass.sh其中有:

UPDATE mysql.user SET Password=PASSWORD('newpassword') WHERE User='root'; 

# mysqld_safe --init-file=resetpass.sh 

# service mysqld start --skip-grant-tables 

# mysql -u root -p 

輸入pass

mysql > change root pass ; flush privs; 

退出

# restart mysql service 

MySQL v ersion我使用的是5.1.73 centos6

0

根據文檔,在MySQL 5.7臨時密碼被放在/var/log/mysqld,但這顯然不是5.6的情況。

在RHEL 6.7上安裝MySQL 5.6後,我終於發現安裝時設置的臨時root密碼被放置在文件/root/.mysql_secret中。