2015-11-03 229 views
28

我已經在Centos7虛擬機上安裝了mySQL,但是我在使用root登錄時遇到問題。我嘗試登錄沒有密碼或嘗試任何默認的(如MySQL,管理等)我查看my.cnf文件,並沒有密碼。我試圖通過停止服務來改變密碼,並用mysqld_safe --skip-grant-tables &重新啓動它,但我得到那mysqld_safe:command not found 我不知道該怎麼辦。任何提示/想法將不勝感激!在Centos7上更改mysql root密碼

+0

你需要指定的完整路徑的命令。如果你不知道那是什麼,find就是你的朋友。密碼不會,*不應該用* my.cnf表示。 – tadman

回答

135

你使用的是什麼版本的MySQL?我正在使用5.7.10,並且以root身份登錄時出現同樣的問題

有兩個問題 - 爲什麼我不能以root身份登錄以開始使用,爲什麼我不能使用'mysqld_safe`啓動mySQL來重置root密碼。

我沒有回答安裝過程中設置root的密碼,但在這裏就是你做重新設置root的密碼

編輯上安裝初始root密碼可以通過運行

grep 'temporary password' /var/log/mysqld.log 
找到什麼

http://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html


  1. systemd現在使用的MySQL而不是mysqld_safe照顧(這就是爲什麼你得到了-bash: mysqld_safe: command not found錯誤 - 它沒有安裝)

  2. user表結構發生了變化。

所以重置root密碼,你還是啓動MySQL與--skip-grant-tables選擇和更新user表,但你怎麼做改變。

1. Stop mysql: 
systemctl stop mysqld 

2. Set the mySQL environment option 
systemctl set-environment MYSQLD_OPTS="--skip-grant-tables" 

3. Start mysql usig the options you just set 
systemctl start mysqld 

4. Login as root 
mysql -u root 

5. Update the root user password with these mysql commands 
mysql> UPDATE mysql.user SET authentication_string = PASSWORD('MyNewPassword') 
    -> WHERE User = 'root' AND Host = 'localhost'; 
mysql> FLUSH PRIVILEGES; 
mysql> quit 

6. Stop mysql 
systemctl stop mysqld 

7. Unset the mySQL envitroment option so it starts normally next time 
systemctl unset-environment MYSQLD_OPTS 

8. Start mysql normally: 
systemctl start mysqld 

Try to login using your new password: 
7. mysql -u root -p 

參考

,因爲它說在http://dev.mysql.com/doc/refman/5.7/en/mysqld-safe.html

注意

在MySQL 5.7.6中,MySQL的安裝使用RPM 迪服務器啓動和關閉由systemd在 幾個Linux平臺上進行管理。在這些平臺上,mysqld_safe不再是 ,因爲它不是必需的。有關更多信息,請參見部分 2.5.10,「使用systemd管理MySQL服務器」。

它會帶您到http://dev.mysql.com/doc/refman/5.7/en/server-management-using-systemd.html,它會在頁面底部提到systemctl set-environment MYSQLD_OPTS=

密碼重置命令是在http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

+0

我意識到,這是幾乎相同的答案,因爲我給這裏:http://stackoverflow.com/questions/33374314/can-not-login-to-mysql-5-7-9-after-change-password/ 34207145#34207145但我不確定我應該怎麼做,如果它基本上是2個問題的答案 - 給出2個答案或從一個到另一個的鏈接? –

+0

這是一個很好的答案,在這種情況下,確實沒有統一的答案來源。如果我只是早點發現它,那將節省幾個小時的工作時間。謝謝。 –

+0

謝謝!grep'臨時密碼'/var/log/mysqld.log –

2

請停止所有服務,MySQL的使用下面的命令 /etc/init.d/mysqld停止 它使用

mysqld_safe的--skip-贈款表後

它可以正常工作

7

使用以下步驟的底部,以重置密碼。

$ sudo systemctl start mysqld 

重置MySql服務器root密碼。

$sudo grep 'temporary password' /var/log/mysqld.log 

輸出不同的是喜歡 - :

10.744785Z 1 [Note] A temporary password is generated for [email protected]: o!5y,oJGALQa 

使用過程中復位mysql_secure_installation過程上面的密碼。

<pre> 
    $ sudo mysql_secure_installation 
</pre> 
    Securing the MySQL server deployment. 

    Enter password for user root: 

您已成功重置MySql Server的根密碼。使用下面的命令來檢查mysql服務器是否連接。

$ mysql -u root -p 

http://gotechnies.com/install-latest-mysql-5-7-rhelcentos-7/

1

工作對我來說是這樣的: 1.停止MySQL的: systemctl停止mysqld的

  • 設置MySQL的環境選項 systemctl集-environment MYSQLD_OPTS =「 - skip-grant-tables」

  • 啓動mysql usig您剛剛設置的選項 systemctl啓動mysqld

  • 以root身份登錄 的mysql -u根

  • 登錄後我使用FLUSH PRIVILEGES;告訴服務器重新加載授權表,以便賬戶管理聲明起作用。 如果我不這樣做,我收到此錯誤試圖更新密碼: 「找不到在用戶表中的任何匹配行」

  • 2

    所有,

    這裏有點扭曲用mysql-community-server 5.7 我分享一些步驟,如何重置mysql5.7的root密碼或設置密碼。它也可以用於centos7和RHEL7。

    step1。 1日停止你的數據庫

    service mysqld stop

    第二步。第二修改的/etc/my.cnf文件添加 「跳過授權的表」

    vi /etc/my.cnf 
    

    的[mysqld] 跳過授權桌

    步驟3。第三個啓動MySQL

    service mysqld start

    步驟4。選擇mysql默認數據庫

    mysql -u root 
    
    mysql>use mysql; 
    

    step4。設置新密碼

    mysql> update user set authentication_string=PASSWORD("yourpassword") where User='root';

    STEP5重啓MySQL數據庫

    service mysqld restart 
    
    mysql -u root -p 
    

    享受:)