背景: MySQL數(shù)據(jù)庫root賬號一般只有MySQL DBA知道,這個賬號的密碼需要嚴格保密,一旦泄漏問題很嚴重;但是如果DBA忘記了,則不能進行某些MySQL的管理工作,這時就必須在保證數(shù)據(jù)安全、無損壞的情況重置root賬號密碼
步驟: 1. 停止mysqld數(shù)據(jù)庫服務(wù) shell> service mysql stop 注:如果有用戶擁有shutdown權(quán)限,則可以使用mysqladmin --user=xxx -password shutdown停止mysqld服務(wù)
2. 以--skip-grant-tables選項啟動mysqld數(shù)據(jù)庫服務(wù) shell> mysqld --datadir=/var/data/ --pid-file=/var/data/xxx.pid --skip-grant-tables 注:datadir指定數(shù)據(jù)庫數(shù)據(jù)目錄,pid-file指定內(nèi)容為mysqld進程號的文件,指定skip-grant-tables選項,mysqld啟動時忽略權(quán)限驗證
3. 不使用密碼登錄mysql數(shù)據(jù)庫 shell> mysql -uroot mysql 注:不指定密碼選項(-p或--password),則使用空密碼登錄
4. 修改賬號root密碼 mysql> update user set password=password('root_pwd') where user='root'; mysql> flush privileges; 注:修改完密碼后,必須使用flush privileges語句讓密碼生效,這里設(shè)置root賬號密碼為root_pwd
5. 停止mysqld數(shù)據(jù)庫服務(wù) shell> mysqladmin --user=root -password shutdown 注:這次使用mysqladmin停止,linux下service不能停止手工啟動的mysql數(shù)據(jù)庫服務(wù)器
6. 正常啟動mysql數(shù)據(jù)庫 shell> service mysql start
7. 使用新密碼登錄,發(fā)現(xiàn)密碼已經(jīng)修改為新密碼 shell> mysql -uroot -proot_pwd mysql
|