我跟着重置mysql的密碼這些指令:https://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html不能復位MySQL root密碼
但不知何故,它並不在我的環境中工作。
首先,我創建了一個像這樣重置root密碼的sql文件。
UPDATE mysql.user SET Password=PASSWORD('foobar') WHERE User='root';
FLUSH PRIVILEGES;
而且sudo service mysqld stop
然後sudo mysqld_safe --init-file=/etc/mysql_grant.sql &
。
然後我試圖通過根mysql -u root -pfoobar
,它失敗,這個錯誤連接數據庫:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)
下一個我試圖用mysqld
,但目前還沒有,所以我用mysqld_safe
代替。
sudo mysqld_safe --skip-grant-tables &
,然後mysql -u root
。
我也試過sudo service mysqld start --skip-grant-tables
,然後mysql -u root
。
但一切都失敗,相同的錯誤消息。
如何重設根密碼?
我使用CentOS release 6.5 (Final)
和mysql --version
輸出:
mysql Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1
編輯
這是我的/etc/my.cnf
。
[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
[mysqld_safe]
socket = /var/lib/mysql/mysql.sock
[mysqld]
user = mysql
pid-file = /var/run/mysql/mysql.pid
socket = /var/lib/mysql/mysql.sock
port = 3306
datadir = /var/lib/mysql
[mysql]
!includedir /etc/mysql/conf.d
而且我確實有/var/lib/mysql/mysql.sock
。
編輯2
sudo mysqld_safe --init-file=/etc/mysql_grant.sql -S /var/lib/mysqld.sock &
給了我這個消息。不知何故,它剛剛陳述後便告結束。 sudo mysqld_safe --init-file=/etc/mysql_grant.sql -S /var/lib/mysql.sock &
給了我同樣的錯誤。
[1] 4700
140411 17:59:52 mysqld_safe Logging to '/var/lib/mysql/[MYSERVERNAME].err'.
140411 17:59:52 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
140411 17:59:52 mysqld_safe mysqld from pid file /var/run/mysql/mysql.pid ended
感謝您的建議。但是我無法知道我應該怎樣做「設置套接字文件路徑」。我在我的問題中添加了my.cnf。我認爲這個配置告訴服務器關於套接字文件。你能告訴我更具體的我應該怎麼做? – ironsand
使用此命令啓動服務器時的套接字文件路徑: - sudo mysqld_safe --init-file =/etc/mysql_grant.sql -S /var/lib/mysqld.sock& –
我試過'mysqld.sock'和'mysql.sock',但兩者都不適合我。 – ironsand