最近使用阿里雲服務器,由於安裝lnmp安裝包時疏忽,安裝完后忘記了mysql的root用戶密碼。本來想重裝服務器系統,但由於之前換系統和安裝環境花費了不少時間,也覺得沒必要出現什么問題都去重裝系統。由於服務器安裝的是Linux系統,於是只有用shell命令去修改了。
在進行重置mysql用戶密碼時首先確認服務器出於安全的狀態,也就是沒有人能夠任意地連接MySQL數據庫。因為在重新設置MySQL的root密碼的期間,MySQL數據庫完全出於沒有密碼保護的狀態下,其他的用戶也可以任意地登錄和修改MySQL的信息。可以采用將MySQL對外的端口封閉,並且停止Apache以及所有的用戶進程的方法實現服務器的准安全狀態。
1>停止mysql.
代碼如下 | 復制代碼 |
# /etc/init.d/mysqld stop |
2>修改MySQL的登錄設置
代碼如下 | 復制代碼 |
# vi /etc/my.cnf |
在[mysqld]的段中加上一句:skip-grant-tables
例如:
代碼如下 | 復制代碼 |
[mysqld] port = 3306 socket = /tmp/mysql.sock skip-external-locking skip-grant-tables |
保存並且退出vi。
3>重新啟動mysql
代碼如下 | 復制代碼 |
# /etc/init.d/mysqld restart |
4>登錄並修改mysql的root密碼
代碼如下 | 復制代碼 |
# /usr/bin/mysql mysql> USE mysql ; mysql> UPDATE user SET Password = password('newpassword') WHERE User = 'root' ; mysql> flush privileges ; mysql> quit ;//www.111cn.net |
5>將mysql的登錄設置修改回來
代碼如下 | 復制代碼 |
# vi /etc/my.cnf |
將剛才在[mysqld]的段中加上的skip-grant-tables刪除
保存並且退出vi。
6>重新啟動mysql
代碼如下 | 復制代碼 |
# /etc/init.d/mysqld restart |
例子,一個萬能的方法
作為可選方式,在任何平台上,可使用mysql客戶端設置新密碼(但該方法不夠安全):
停止mysqld,並用“–skip-grant-tables –user=root”選項重啟它(Windows用戶可省略–user=root部分)。
使用下述命令連接到mysqld服務器:www.111Cn.net
代碼如下 | 復制代碼 |
shell> mysql -u root |
在mysql客戶端發出下述語句:
代碼如下 | 復制代碼 |
mysql> UPDATE mysql.user SET Password=PASSWORD(‘newpwd’) -> WHERE User=’root’; mysql> FLUSH PRIVILEGES; |
用打算使用的實際根用戶密碼替換“newpwd”。
應能使用新密碼進行連接。