最近使用阿里雲伺服器,由於安裝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”。
應能使用新密碼進行串連。