mysql命令行下用戶管理方法分享

如果有mysql管理工具phpmyadmin的話,我們可以通過(guò)圖形畫界面來(lái)對(duì)用戶進(jìn)行管理,但是如果沒(méi)有phpmyadmin這樣的管理工具怎么辦呢

mysql安裝后好,會(huì)有一個(gè)名字為mysql的數(shù)據(jù)庫(kù),存放用戶的表是user,mysql數(shù)據(jù)庫(kù)的用戶管理就是圍繞這個(gè)表展開(kāi)的,當(dāng)然還有一些表,例如:tables_priv,procs_priv,clumns_priv,information_schema數(shù)據(jù)庫(kù)里面的USER_PRIVILEGES等。

如果有mysql管理工具phpmyadmin的話,我們可以通過(guò)圖形畫界面來(lái)對(duì)用戶進(jìn)行管理,但是如果沒(méi)有phpmyadmin這樣的管理工具怎么辦呢?這個(gè)時(shí)候,我們可以通過(guò)命令行執(zhí)行sql語(yǔ)句來(lái)管理mysql的用戶。

一,添加用戶

1,create user

語(yǔ)法:

CREATE USER user_specification
[, user_specification] …

user_specification:
user [IDENTIFIED BY [PASSWORD] ‘password’]
實(shí)例:
代碼如下:
mysql> create user ’44’@’127.0.0.1′; //創(chuàng)建一個(gè)44用戶
Query OK, 0 rows affected (0.00 sec)

mysql> create user ’33’@’localhost’ identified by ‘aaaa’; //創(chuàng)建一個(gè)33用戶,密碼為aaaa
Query OK, 0 rows affected (0.00 sec)

mysql> select * from mysql.user where user=’33’ or user=’44’G; //查看一下mysql下的user

create user 雖然可以創(chuàng)建用戶,但是它只是創(chuàng)建用戶,并沒(méi)有給用戶分配置權(quán)限,所以一般被 grant命令所取代。

2,grant

語(yǔ)法:

GRANT
priv_type [(column_list)]
[, priv_type [(column_list)]] …
ON [object_type] priv_level
TO user_specification [, user_specification] …
[REQUIRE {NONE | ssl_option [[AND] ssl_option] …}]
[WITH with_option …]

object_type:
TABLE
| FUNCTION
| PROCEDURE

priv_level:
*
| *.*
| db_name.*
| db_name.tbl_name
| tbl_name
| db_name.routine_name

user_specification:
user [IDENTIFIED BY [PASSWORD] ‘password’]

ssl_option:
SSL
| X509 #要求x509證書
| CIPHER ‘cipher’ #加密算法
| ISSUER ‘issuer’ #證書發(fā)行商
| SUBJECT ‘subject’ #主題

with_option:
GRANT OPTION
| MAX_QUERIES_PER_HOUR count #每小時(shí)最多執(zhí)行多少條sql
| MAX_UPDATES_PER_HOUR count #每小時(shí)最多更新多少條數(shù)據(jù)
| MAX_CONNECTIONS_PER_HOUR count #每小時(shí)最大的聯(lián)接數(shù)是多少
| MAX_USER_CONNECTIONS count #最大用戶聯(lián)接數(shù)
不要被上面的語(yǔ)法嚇倒,其實(shí)理解什么意思,就很容易掌握。我是這樣理解的。

grant 權(quán)限 on 應(yīng)用范圍(數(shù)據(jù)庫(kù)表,方法等) to 用戶(用@隔開(kāi),前面是用戶名后面是主機(jī)名’用戶名’@’主機(jī)名’) identified by 密碼 require 要求什么的 with 對(duì)用戶的進(jìn)行的執(zhí)行sql的條數(shù)控制。

個(gè)人覺(jué)得,只要記得上面幾個(gè)紅色的關(guān)鍵詞,基本上這個(gè)命令就掌握了。

實(shí)例:
代碼如下:
grant all ON test.* TO ‘test’@’localhost’; //test用戶擁有test數(shù)據(jù)庫(kù)下的所有操作
grant select,update on test.user to ‘test’@’localhost’; //test用戶可以對(duì)test數(shù)據(jù)庫(kù)下user表,進(jìn)行查找和更新操作
//test用戶的的密碼是111111,對(duì)user表中的name字段有讀取權(quán)限,對(duì)id,name有更新權(quán)限
grant select(name),update(id,name) on test.user to ‘test’@’localhost’ identified by ‘111111’;
//test用戶對(duì)所有數(shù)據(jù)庫(kù)擁有所有權(quán)力,并且要求ssl加密
grant all privileges on *.* to ‘test’@’%’ identified by ‘123456’ require ssl

當(dāng)添加完用戶后,別忘 了 flush privileges;

二,刪除用戶

語(yǔ)法:

DROP USER user [, user] …
實(shí)例:
代碼如下:
drop user ‘test2’@’localhost’; //當(dāng)用drop刪除用戶進(jìn),tables_priv,procs_priv等表中的數(shù)據(jù)也會(huì)被刪除

在這里為什么要用’test2’@’localhost’當(dāng)用戶名,而不是直接test2呢,因?yàn)閙ysql.user這張表,是根用戶名和host名決定一個(gè)用戶,你可查看一下表結(jié)構(gòu)就知道了。

show create table mysql.userG;你會(huì)發(fā)現(xiàn)有這個(gè)東西PRIMARY KEY (`Host`,`User`),表示聯(lián)合主鍵

三,修改用戶

語(yǔ)法:

RENAME USER old_user TO new_user
[, old_user TO new_user] …
實(shí)例:
代碼如下:
rename user ‘test2’@’localhost’ to ‘test’@’%’;

四,修改權(quán)限

語(yǔ)法:

REVOKE
priv_type [(column_list)]
[, priv_type [(column_list)]] …
ON [object_type] priv_level
FROM user [, user] …

REVOKE ALL PRIVILEGES, GRANT OPTION
FROM user [, user] …
grant就給用戶分配權(quán)限,revoke是把權(quán)限從用戶的身上拿走。

實(shí)例:
代碼如下:
mysql> revoke update on *.* from ‘tank’@’localhost’;
Query OK, 0 rows affected (0.00 sec)

mysql> select mysql.user.update_priv from mysql.user where user=’tank’ and host=’localhost’;
+————-+
| update_priv |
+————-+

+————-+
1 row in set (0.00 sec)

去掉tank@localhost這個(gè)用戶的更新功能,這個(gè)是去掉一個(gè)權(quán)限,如果我要全部去掉怎么辦呢,一個(gè)一個(gè)寫太麻煩了,看下面的一個(gè)例子
代碼如下:
mysql> revoke all privileges ,grant option from ’33’@’localhost’;
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

用掉33@localhost這個(gè)用戶的所有權(quán)限

作者:海底蒼鷹

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊7 分享