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