MySQL的root密碼忘記怎么辦 修改root密碼的方式
如果哪天你忘記了線上MySQL數(shù)據(jù)庫的root密碼,怎么辦?
大家往往會想到skip-grant-tables參數(shù),具體步驟如下:
1. 關(guān)閉MySQL數(shù)據(jù)庫,因為root密碼忘記了,mysqladmin無法使用,此時,只能通過kill pid關(guān)閉程序。
在這里,科普一下kill 和kill -9的區(qū)別
默認(rèn)參數(shù)下,kill 發(fā)送SIGTERM信號給進(jìn)程,告訴進(jìn)程,你需要被關(guān)閉,請自行停止運行并退出。
kill -9 發(fā)送SIGKILL信號給進(jìn)程,告訴進(jìn)程,你被終結(jié)了,請立刻退出。與SIGTERM相比,這個信號不能被捕獲或忽略,同時接收這個信號的進(jìn)程在收到這個信號時不能執(zhí)行任何清理
所以,萬不得已,不要通過kill -9殺掉進(jìn)程,這可能導(dǎo)致MySQL數(shù)據(jù)庫的物理結(jié)構(gòu)損壞,無法重新啟動。
2. 在my.cnf文件[mysqld]部分添加skip-grant-tables參數(shù)
3. 登錄數(shù)據(jù)庫,修改root賬戶的密碼
以下是修改root密碼的三種方式:
1> mysql> set password for 'root'@'localhost'=password('123'); 無需刷新權(quán)限表
2> mysql> update mysql.user set password=password("456") where user="root" and host="localhost";
mysql> flush privileges;
3> # mysqladmin -u root password "123"
4. 關(guān)閉數(shù)據(jù)庫,注釋掉skip-grant-tables參數(shù),重新啟動數(shù)據(jù)庫。
上面這種方式雖然不錯,但是有個問題,你必須重啟數(shù)據(jù)庫,對于線上環(huán)境,這可能是不被允許的。
下面來談?wù)劻硪环N方法,有點“黑暗科技”的味道
這個方法利用的是mysql.user表還是MyISAM引擎的特性。
1. 將該實例的mysql.user表copy到另一個實例的目錄下,譬如,test數(shù)據(jù)庫的目錄下
2. 登錄另一個實例數(shù)據(jù)庫,修改上述三個文件的權(quán)限,并修改root密碼
mysql> select user,host,password from test.user; +------+-----------+-------------------------------------------+ | user | host | password | +------+-----------+-------------------------------------------+ | root | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | +------+-----------+-------------------------------------------+ 1 row in set (0.00 sec) mysql> update test.user set password=password("hello") where user="root" and host="localhost"; Query OK, 1 row affected (0.15 sec) Rows matched: 1 Changed: 1 Warnings: 0
3. 將上述三個文件copy回源數(shù)據(jù)庫
4. 獲取mysqld的pid,通過kill -HUP `pidof mysqld`方式讓mysqld進(jìn)程重新加載配置文件
[root@keepalived01 ~]# mysql -phello Warning: Using a password on the command line interface can be insecure. ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) [root@keepalived01 ~]# kill -HUP 4283 [root@keepalived01 ~]# mysql -phello Warning: Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2528 Server version: 5.6.26 MySQL Community Server (GPL) Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
通過上述輸出可以看出,kill -HUP之前,直接用密碼hello登錄被拒絕,kill -HUP之后,就可以直接登錄了。
當(dāng)然,以上方法僅供參考,在生產(chǎn)上慎用,畢竟安全壓倒一切,天曉得哪里會出現(xiàn)問題。
以上就是本文的全部內(nèi)容,希望可以幫助大家解決root密碼忘記的困擾,謝謝大家的閱讀。
相關(guān)文章
MySQL查詢空字段或非空字段(is null和not null)
本文介紹在MySQL中,面對值為空(NULL)的字段,應(yīng)該如何查詢。怎么判斷一個字段的值為NULL或不為NULL,需要的朋友可以參考下2016-04-04連接MySQL時出現(xiàn)1449與1045異常解決辦法
這篇文章主要介紹了連接MySQL時出現(xiàn)1449與1045異常解決辦法的相關(guān)資料,通過IP鏈接MySQL的時候會出現(xiàn)1499與1054錯誤異常的情況,這里提供解決辦法,需要的朋友可以參考下2017-09-09通過命令行導(dǎo)入到mysql數(shù)據(jù)庫時出現(xiàn)亂碼的解決方法
原因: 含有中文字符的mysql數(shù)據(jù)庫文件,通過命令行導(dǎo)入到mysql數(shù)據(jù)庫中容易出現(xiàn)亂碼。2014-07-07Mysql?InnoDB引擎中的數(shù)據(jù)頁結(jié)構(gòu)詳解
這篇文章主要為大家介紹了Mysql?InnoDB引擎中的數(shù)據(jù)頁結(jié)構(gòu)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05MySQL之MHA高可用配置及故障切換實現(xiàn)詳細(xì)部署步驟
這篇文章主要介紹了MySQL之MHA高可用配置及故障切換實現(xiàn)詳細(xì)部署步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03linux下mysql開啟遠(yuǎn)程訪問權(quán)限 防火墻開放3306端口
這篇文章主要為大家詳細(xì)介紹了linux下mysql開啟遠(yuǎn)程訪問權(quán)限,防火墻開放3306端口,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01mysql5.7.33誤刪除ibdata文件找回數(shù)據(jù)的方法
這篇文章主要介紹了mysql5.7.33誤刪除ibdata文件找回數(shù)據(jù)的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03