MySQL中(zhong)root用(yong)戶(hu)密碼管理
前言
記錄一下mysql中(zhong)root用(yong)戶(hu)密碼的管理方(fang)式,mysql中(zhong)root用(yong)戶(hu)密碼管理方(fang)式主要分為三個場景:
- 場景一:首次部署mysql,需要設置root用戶密碼
- 場景二:已知mysql的root用戶密碼,但是需要修改對應的密碼(例如定期更新密碼)
- 場景三:忘記root密碼,需重置root用戶密碼
首次部署mysql,設置root用戶密碼
方式一:在初始化數據庫時設置
#此方式是給root用戶設置臨時密碼,但應用臨時密碼登錄數據庫服務后,需要將臨時密碼修改,否則不能進行任何操作
mysqld --initialize --user=mysql --datadir=/data/3306/data --basedir=/usr/local/mysql
# 參數解析
# --user:指定Linux系統用戶
# --datadir:指定數據目錄
# --basedir:指定按照目錄
方式二:手動設置
mysql8.0版本
mysqladmin -uroot password '新密碼';
#或者 此方法需要登錄到MySQL系統中
alter user root@'localhost' identified by '新密碼';
mysql5.7版本
mysqladmin -uroot password '新密碼';
#或者 此方法需要登錄到MySQL系統中
alter user root@'localhost' identified by '新密碼';
mysql5.6版本
set password for 'oldboy'@'localhost'=PASSWORD('新密碼');
flush privileges;
補充:flush privileges的作用:
- 作用一:將內存中操作的數據落到磁盤上
- 作用二:將磁盤中的數據加載到內存中
此(ci)命令只(zhi)針(zhen)對(dui)授權表(biao)中的數據(ju)
已知root用戶密碼,修改root用戶密碼
mysql8.0版本
mysqladmin -uroot -p老密碼 password '新密碼'
#或者登錄進數據庫中執行
alter mysql.user root@'localhost' identified by '新密碼';
mysql5.7版本
# 需登錄進數據庫中
update mysql.user set authentication_string=PASSWORD('新密碼') where user='root' and host='localhost';
flush privileges;
mysql5.6版本
# 需登錄進數據庫中
set password for 'root'@'localhost'=PASSWORD('新密碼');
flush privileges;
忘記root密碼,需重置root用戶密碼
步驟一:關閉數據庫服務
[root@master ~]# /etc/init.d/mysqld stop
# 檢查是否已關閉
[root@master ~]# ps -ef | grep mysqld
root 4070896 4068830 0 15:24 pts/0 00:00:00 grep mysqld
步驟二:采用安全模式啟動數據庫(可以免密連接數據庫)
# 輸入mysqld_safe --skip-grant-tables --skip-networking & 即可
[root@master ~]# mysqld_safe --skip-grant-tables --skip-networking &
[1] 4071155
[root@master ~]# 2025-10-28T07:25:16.184768Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2025-10-28T07:25:16.211299Z mysqld_safe Starting mysqld daemon with databases from /data00/data/mysql
步驟三:進入數據庫修改密碼
[root@master ~]# 2025-10-28T07:25:16.184768Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2025-10-28T07:25:16.211299Z mysqld_safe Starting mysqld daemon with databases from /data00/data/mysql
# 輸入mysql -uroot 即可
mysql -uroot
# 修改密碼
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> alter user root@'localhost' identified by 'huangsir';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
# 退出數據庫
mysql> exit;
步驟四:恢復數據庫服務正常啟動
# 先殺掉進程
[root@master ~]# pkill mysql
# 檢查進程是否殺掉
[root@master ~]# ps -ef | grep mysql
root 4072026 4068830 0 15:29 pts/0 00:00:00 grep mysql
# 啟動mysql
[root@master ~]# /etc/init.d/mysqld start
Starting mysqld (via systemctl): mysqld.service.
測試連接
[root@master ~]# mysql -uroot -phuangsir
mysql: [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 8
Server version: 8.0.26 MySQL Community Server - GPL
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
本文來自博客園,作者:huangSir-devops,轉載請注明原文鏈接://www.xtjzw.net/huangSir-devops/p/19171958,微信(xin)Vac666666,歡迎(ying)交流
