mysql用戶的增刪改查:創(chuàng)建用戶、刪除用戶、修改用戶名和密碼、設(shè)置密碼過期、查詢用戶
mysql中用戶的增刪改查命令總結(jié):
| mysql用戶的增刪改查 | 命令示例 |
|---|---|
| 增(創(chuàng)建用戶) | create user chushiyan; create user chushiyan@localhost identified by '123456'; grant select on test.* to chushiyan0415@192.168.0.150 identified by '123456'; |
| 刪(刪除用戶) | drop user chushiyan@localhost; |
| 改(修改用戶名和密碼、設(shè)置密碼過期) | rename user 'chushiyan'@'localhost' to 'chushiyan0415'@'localhost'; set password for chushiyan@localhost=password('12345678'); alter user chushiyan@localhost password expire; |
| 查(查詢用戶) | select user,host,password from mysql.user where user = 'chushiyan'; |
具體詳情如下。
一、創(chuàng)建用戶
用戶名長度不能超過16個(gè)字符。
用戶名和密碼大小寫敏感。比如,chushiyan和Chushiyan是兩個(gè)用戶名。
(一)使用create user創(chuàng)建用戶的最簡方式
# 創(chuàng)建用戶chushiyan,
create user chushiyan;
執(zhí)行上面的命令后,會在名為mysql的庫中的user表中插入一條記錄:
mysql> select user,host,password from mysql.user where user = 'chushiyan';
+-----------+------+----------+
| user | host | password |
+-----------+------+----------+
| chushiyan | % | |
+-----------+------+----------+
1 row in set (0.35 sec)
注釋:
| 項(xiàng) | 說明 |
|---|---|
| host列 | 首先,我們要知道,mysql不僅通過用戶名、密碼驗(yàn)證用戶,同時(shí)還要根據(jù)host(來源主機(jī))驗(yàn)證。比如用戶jack,host值為192.168.0.11,那就只能從該IP主機(jī)連接Mysql,如果用其他IP主機(jī)即使用戶名密碼都正確,也無法連接mysql host列值為%,是通配符,對應(yīng)任意長度的任意字符。跟查詢語句中的%是一樣的,如模糊查詢語句:select * from user where name like '%shi%' 。 因?yàn)槊頲reate user chushiyan; 中沒有指定host(來源主機(jī)),所以默認(rèn)是%,即該用戶可以從任意主機(jī)連接Mysql。 |
| password列 | password為空,因?yàn)槊頲reate user chushiyan; 中沒有指定。這樣的話,不用密碼也能登陸mysql。比如直接通過 mysql -uchushiyan 就能連接mysql。 當(dāng)然,不設(shè)置密碼是非常危險(xiǎn)的。 |
(二)使用create user創(chuàng)建用戶同時(shí)指定host、password
create user chushiyan@localhost identified by '123456';
執(zhí)行上面的命令后,查詢mysql.user表:
mysql> select user,host,password from mysql.user where user = 'chushiyan';
+-----------+-----------+-------------------------------------------+
| user | host | password |
+-----------+-----------+-------------------------------------------+
| chushiyan | % | |
| chushiyan | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+-----------+-------------------------------------------+
2 rows in set (0.00 sec)
第一條記錄是前面插入的記錄。第二條才是現(xiàn)在插入的記錄。
注釋:
| 項(xiàng) | 說明 |
|---|---|
| user列 | 用戶名可以重復(fù)。mysql數(shù)據(jù)庫根據(jù)'user'@'host'來確認(rèn)記錄是否唯一。 這里已經(jīng)存在chushiyan@'%',如果執(zhí)行的是create user chushiyan identified by '123456'; 就必然報(bào)錯(cuò),因?yàn)闆]指定host,就會再創(chuàng)建chushiyan@'%' |
| host列 | 來源主機(jī)。這里指定了localhost |
| password列 | 加密后的密碼。共41位。mysql4.1之前是16位 |
(三)使用grant創(chuàng)建用戶同時(shí)指定host、password、權(quán)限
創(chuàng)建用戶chushiyan0415同時(shí)指定host、password,并且賦予他對test庫的查詢權(quán)限:
grant select on test.* to chushiyan0415@192.168.0.150 identified by '123456';
上面這個(gè)命令,其實(shí)就是下面這兩行命令的簡寫:
create user chushiyan0415@192.168.0.150 identified by '123456';
grant select on test.* to chushiyan0415@192.168.0.150;
總結(jié)grant主要是用來給用戶賦予權(quán)限,但是順帶手又可以用來創(chuàng)建用戶。
執(zhí)行上面的命令后,查詢mysql.user表:
mysql> select user,host,password from mysql.user where user like 'chushiyan%';
+---------------+---------------+-------------------------------------------+
| user | host | password |
+---------------+---------------+-------------------------------------------+
| chushiyan | % | |
| chushiyan | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| chushiyan0415 | 192.168.0.150 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+---------------+---------------+-------------------------------------------+
3 rows in set (0.00 sec)
附錄:grant賦予用戶增加、刪除、修改、查詢的權(quán)限:
grant insert on test.* to chushiyan0415@192.168.0.150 ;
grant delete on test.* to chushiyan0415@192.168.0.150 ;
grant update on test.* to chushiyan0415@192.168.0.150 ;
grant select on test.* to chushiyan0415@192.168.0.150 ;
或者直接寫成:
grant all on test.* to chushiyan0415@192.168.0.150 ;
二、刪除用戶
語法:
DROP USER user, [user], ...
示例:
drop user 'chushiyan0415'@'192.168.0.150';
drop user chushiyan@localhost;
三、修改用戶(修改用戶名和密碼、設(shè)置密碼過期)
(一)修改用戶名和來源主機(jī)
語法格式:
RENAME USER <舊用戶> TO <新用戶>
示例:
rename user 'chushiyan'@'localhost' to 'chushiyan0415'@'localhost';
rename user 'chushiyan0415'@'localhost' to 'chushiyan0415'@'192.168.0.150';
(一)修改用戶密碼
Mysql中的用戶沒有太多屬性,主要就是user、host、password,后兩者還不是必須的。所以用戶的修改主要就就是修改用戶密碼。所以在mysql5.6.6版本之前都沒有alter user命令,提供了set password命令:
set password for chushiyan@localhost=password('12345678');
注釋:
| set password | 固定的語法 |
| for chushiyan@localhost | for:指定要修改的用戶。如果是修改當(dāng)前用戶,可以省略。 |
| password() | 密碼函數(shù),對字符串進(jìn)行加密。mysql.user表中存放的是加密后的密碼, |
(二)設(shè)置密碼過期
mysql5.6.6版本之后提供了alter user命令,主要用于設(shè)置密碼過期。什么是密碼過期?密碼過期不是用戶過期,用戶仍然可以登錄,只是無法做任何操作。
設(shè)置密碼過期示例:
alter user chushiyan@localhost password expire;
四、查詢用戶
使用select語句查詢mysql.user表即可:
select user,host,password from mysql.user where user = 'chushiyan';