root指的是超級(jí)管理員;mysql在安裝時(shí),會(huì)默認(rèn)創(chuàng)建一個(gè)名為root的用戶,該用戶擁有超級(jí)權(quán)限,可以控制整個(gè)MySQL服務(wù)器。root用戶擁有很高的權(quán)限,不僅可以修改自己的密碼,還可以修改其他用戶的密碼。
本教程操作環(huán)境:windows7系統(tǒng)、mysql8版本、Dell G3電腦。
在mysql中,root指的是超級(jí)管理員,系統(tǒng)會(huì)默認(rèn)一個(gè)超級(jí)管理員。
MySQL 在安裝時(shí),會(huì)默認(rèn)創(chuàng)建一個(gè)名為 root 的用戶,該用戶擁有超級(jí)權(quán)限,可以控制整個(gè) MySQL 服務(wù)器。
在對(duì) MySQL 的日常管理和操作中,為了避免有人惡意使用 root 用戶控制數(shù)據(jù)庫,我們通常創(chuàng)建一些具有適當(dāng)權(quán)限的用戶,盡可能地不用或少用 root 用戶登錄系統(tǒng),以此來確保數(shù)據(jù)的安全訪問。
一般root超級(jí)管理員的權(quán)限會(huì)比一般用戶的權(quán)限大很多,所以有些操作要root權(quán)限才能運(yùn)行。
root 用戶擁有很高的權(quán)限,不僅可以修改自己的密碼,還可以修改其他用戶的密碼。
MySQL修改root密碼
在 MySQL 中,root 用戶擁有很高的權(quán)限,因此必須保證 root 用戶密碼的安全。
修改MySQL數(shù)據(jù)庫的user表
因?yàn)樗匈~戶信息都保存在 user 表中,因此可以直接通過修改 user 表來改變 root 用戶的密碼。
root 用戶登錄到 MySQL 服務(wù)器后,可以使用 UPDATE 語句修改 MySQL 數(shù)據(jù)庫的 user 表的 authentication_string 字段,從而修改用戶的密碼。
使用 UPDATA 語句修改 root 用戶密碼的語法格式如下:
UPDATE?mysql.user?set?authentication_string?=?PASSWORD?("rootpwd)?WHERE?User?=?"root"?and?Host="localhost";
新密碼必須使用 PASSWORD() 函數(shù)來加密。執(zhí)行UPDATE語句后,需要執(zhí)行FLUSH PRIVILEGES語句重新加載用戶權(quán)限。
示例
下面使用 UPDATE 語句將 root用戶的密碼修改為“rootpwd2”。
使用 root 用戶登錄到 MySQL 服務(wù)器后,SQL 語句和運(yùn)行結(jié)果如下所示:
mysql>?UPDATE?mysql.user?set?authentication_string?=?password?("rootpwd2") ????->?WHERE?User?=?"root"?and?Host?=?"localhost"; Query?OK,?1?row?affected,?0?warning?(0.00?sec) Rows?matched:?1??Changed:?1??Warnings:0 mysql>?FLUSH?PRIVILEGES; Query?OK,?0?rows?affected?(0.06?sec)
結(jié)果顯示,密碼修改成功。而且使用了FLUSH PRIVILEGES;語句加載權(quán)限。退出后就必須使用新密碼來登錄了。
使用SET語句修改root用戶的密碼
SET PASSWORD 語句可以用來重新設(shè)置其他用戶的登錄密碼或者自己使用的賬戶的密碼。使用 SET 語句修改密碼的語法結(jié)構(gòu)如下:
SET?PASSWORD?=?PASSWORD?("rootpwd");
示例
下面使用 SET 語句將 root 用戶的密碼修改為“rootpwd3”。
使用 root 用戶登錄到 MySQL 服務(wù)器后,SQL 語句和運(yùn)行結(jié)果如下所示:
MySQL>?SET?PASSWORD?=?password?("rootpwd3"); Query?OK,?0?rows?affected?(0.00?sec)
結(jié)果顯示,SET 語句執(zhí)行成功,root 用戶的密碼被成功設(shè)置為“rootpwd3”。
MySQL root修改普通用戶密碼
使用SET語句修改普通用戶的密碼
在 MySQL 中,只有 root 用戶可以通過更新 MySQL 數(shù)據(jù)庫來更改密碼。使用 root 用戶登錄到 MySQL 服務(wù)器后,可以使用 SET 語句來修改普通用戶密碼。語法格式如下:
SET?PASSWORD?for?'username'@'hostname'?=?PASSWORD?('newpwd');
其中,username 參數(shù)是普通用戶的用戶名,hostname 參數(shù)是普通用戶的主機(jī)名,newpwd 是要更改的新密碼。
注意:新密碼必須使用 PASSWORD() 函數(shù)來加密,如果不使用 PASSWORD() 加密,也會(huì)執(zhí)行成功,但是用戶會(huì)無法登錄。
如果是普通用戶修改密碼,可省略 FOR 子句來更改自己的密碼。語法格式如下:
SET?PASSWORD?=?PASSWORD('newpwd');
示例 1
首先創(chuàng)建一個(gè)沒有密碼的 testuser 用戶,SQL 語句和運(yùn)行結(jié)果如下:
mysql>?CREATE?USER?'testuser'@'localhost'; Query?OK,?0?rows?affected?(0.14?sec)
root 用戶登錄 MySQL 服務(wù)器后,再使用 SET 語句將 testuser 用戶的密碼修改為“newpwd”,SQL 語句和運(yùn)行結(jié)果如下:
mysql>?SET?PASSWORD?FOR?'testuser'@'localhost'?=?PASSWORD("newpwd"); Query?OK,?0?rows?affected,?1?warning?(0.01?sec)
由運(yùn)行結(jié)果可以看出,SET 語句執(zhí)行成功,testuser 用戶的密碼被成功設(shè)置為“newpwd”。
下面驗(yàn)證 testuser 用戶密碼是否修改成功。退出 MySQL 服務(wù)器,使用 testuser 用戶登錄,輸入密碼“newpwd”,SQL 語句和運(yùn)行結(jié)果如下:
C:Usersleovo>mysql?-utestuser?-p Enter?password:?****** Welcome?to?the?MySQL?monitor.??Commands?end?with?;?or?g. Your?MySQL?connection?id?is?15 Server?version:?5.7.29-log?MySQL?Community?Server?(GPL) ? Copyright?(c)?2000,?2020,?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.
由運(yùn)行結(jié)果可以看出,testuser 用戶登錄成功,修改密碼成功。
示例 2
使用 testuser 用戶登錄 MySQL 服務(wù)器,再使用 SET 語句將密碼更改為“newpwd1”,SQL 語句和運(yùn)行結(jié)果如下所示:
mysql>?SET?PASSWORD?=?PASSWORD('newpwd1'); Query?OK,?0?rows?affected,?1?warning?(0.00?sec)
由運(yùn)行結(jié)果可以看出,修改密碼成功。
使用UPDATE語句修改普通用戶的密碼
使用 root 用戶登錄 MySQL 服務(wù)器后,可以使用 UPDATE 語句修改 MySQL 數(shù)據(jù)庫的 user 表的 authentication_string 字段,從而修改普通用戶的密碼。UPDATA 語句的語法如下:
UPDATE?MySQL.user?SET?authentication_string?=?PASSWORD("newpwd")?WHERE?User?=?"username"?AND?Host?=?"hostname";
其中,username 參數(shù)是普通用戶的用戶名,hostname 參數(shù)是普通用戶的主機(jī)名,newpwd 是要更改的新密碼。
注意,執(zhí)行 UPDATE 語句后,需要執(zhí)行 FLUSH PRIVILEGES 語句重新加載用戶權(quán)限。
示例 3
使用 root 用戶登錄 MySQL 服務(wù)器,再使用 UPDATE 語句將 testuser 用戶的密碼修改為“newpwd2”的 SQL 語句和運(yùn)行結(jié)果如下:
mysql>?UPDATE?MySQL.user?SET?authentication_string?=?PASSWORD?("newpwd2") ????->?WHERE?User?=?"testuser"?AND?Host?=?"localhost"; Query?OK,?1?row?affected,?1?warning?(0.07?sec) Rows?matched:?1??Changed:?1??Warnings:?1 mysql>?FLUSH?PRIVILEGES; Query?OK,?0?rows?affected?(0.03?sec)
由運(yùn)行結(jié)果可以看出,密碼修改成功。testuser 的密碼被修改成了 newpwd2。使用 FLUSH PRIVILEGES 重新加載權(quán)限后,就可以使用新的密碼登錄 testuser 用戶了。
使用 GRANT 語句修改普通用戶密碼
除了前面介紹的方法,還可以在全局級(jí)別使用 GRANT USAGE 語句指定某個(gè)賬戶的密碼而不影響賬戶當(dāng)前的權(quán)限。需要注意的是,使用 GRANT 語句修改密碼,必須擁有 GRANT 權(quán)限。一般情況下最好使用該方法來指定或修改密碼。語法格式如下:
GRANT?USAGE?ON?*.*?TO?'user'@’hostname’?IDENTIFIED?BY?'newpwd';
其中,username 參數(shù)是普通用戶的用戶名,hostname 參數(shù)是普通用戶的主機(jī)名,newpwd 是要更改的新密碼。
示例 4
使用 root 用戶登錄 MySQL 服務(wù)器,再使用 GRANT 語句將 testuser 用戶的密碼修改為“newpwd3”,SQL 語句和運(yùn)行結(jié)果如下:
mysql>?GRANT?USAGE?ON?*.*?TO?'testuser'@'localhost'?IDENTIFIED?BY?'newpwd3'; Query?OK,?0?rows?affected,?1?warning?(0.05?sec)
由運(yùn)行結(jié)果可以看出,密碼修改成功。
【相關(guān)推薦:mysql視頻教程】