MySQL—修改數據庫root用戶密碼


三種方式

  1. linux命令行執行mysqladmin客戶端程序
  2. mysql命令行set password命令
  3. mysql命令行update命令 (推薦使用,避免多用戶問題)

方式一:mysqladmin方式

格式

$ mysqladmin -uuser_name -p'oldPasswd' password 'newPasswd'

其中user_name即為用戶名,oldPasswd即為舊密碼,newPasswd即為新密碼;

示例

$ mysqladmin -uroot -p'1qaz!QAZ' password 123456

方式二:set password方式

需要先通過mysql -uroot -p進入mysql命令行

格式

mysql> set password for user_name@localhost=password('newPasswd');
Query OK, 0 rows affected (0.94 sec)

其中user_name即為用戶名,newPasswd即為新密碼;

示例

mysql> set password for root@localhost = password('1qw2!QW@');

方式三:update命令

需要先通過mysql -uroot -p進入mysql命令行

格式

mysql> update mysql.user set password=password('newPasswd') where user='userName';
mysql> flush privileges;

其中user_name即為用戶名,newPasswd即為新密碼;

示例

mysql> update mysql.user set password=password('1qaz!QAZ') where user='root';
Query OK, 0 rows affected (0.94 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.94 sec)

Q & A

問題:修改密碼后服務端生效,但是navicat還能使用舊密碼連接mysql?

  其實mysql數據庫中,我們所說的用戶不僅僅只是'root',更多的是指root@localhostroot@%這種帶有'userName'@'hostName'的才是具體的用戶。
1)當我們使用:

mysql> set password for root@localhost=password('newPasswd');`

可能只是改了root@localhost這個用戶,有可能還有root@%用戶。
2)查看user表:

mysql> select host, user, password from mysql.user where user='root';

在這里插入圖片描述
從user表中,我們可以看到root對應到多個host,使用之前的set語句可能我們只是更改了其中一個用戶,我們可以通過update命令更新mysql.user表,全局更新所有root@hostName的密碼;
3)所以,我們應該使用:

mysql> update mysql.user set password=password('newPasswd') where user='root';
Query OK, 1 row affected (0.11 sec)
Rows matched: 5  Changed: 1  Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.94 sec)

這樣可以全局改變所有帶有root@的用戶密碼,再通過navicat使用舊密碼連接數據庫時,遠程訪問拒絕。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM