溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么分析Mysql 權(quán)限管理

發(fā)布時間:2021-11-16 14:48:33 來源:億速云 閱讀:151 作者:柒染 欄目:MySQL數(shù)據(jù)庫

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)怎么分析Mysql 權(quán)限管理,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

Mysql 賬戶權(quán)限信息存儲在 mysql 數(shù)據(jù)庫 user、db、host、table_priv、colunms_priv和procs_priv表中,在Mysql 啟動時服務(wù)器將這些數(shù)據(jù)庫表內(nèi)容讀入內(nèi)存中。

    Mysql 權(quán)限層級主要分為: 服務(wù)器、數(shù)據(jù)庫、表、列。按權(quán)限的使用環(huán)境則主要分為:普通權(quán)限、管理員權(quán)限、特殊權(quán)限,其中普通權(quán)限主要應(yīng)用于應(yīng)用程序鏈接數(shù)據(jù)庫,管理員權(quán)限則主要用于服務(wù)器管理。

mysql 權(quán)限列表詳解:

分類權(quán)限描述應(yīng)用層級
普通權(quán)限
(應(yīng)用程序)
CREATE允許用戶創(chuàng)建數(shù)據(jù)庫或表數(shù)據(jù)庫、表或索引
DROP允許用戶刪除數(shù)據(jù)庫或表數(shù)據(jù)庫或表
GRANT OPTION允許用戶授予權(quán)限數(shù)據(jù)庫、表或保存的程序
ALTER允許用戶改變表結(jié)構(gòu)
DELETE允許用戶刪除現(xiàn)存表的行
INDEX允許用戶創(chuàng)建、修改表索引
INSERT允許用戶在表中插入新的記錄
SELECT允許用戶查看表記錄
UPDATE允許用戶修改表中現(xiàn)有的記錄
CREATE VIEW允許用戶創(chuàng)建視圖視圖
SHOW VIEW允許用戶查看視圖創(chuàng)建語句視圖
ALTER ROUTINE允許用戶修改存儲過程、函數(shù)保存的程序
CREATE ROUTINE允許用戶創(chuàng)建存儲過程、函數(shù)保存的程序
EXECUTE允許用戶允許以創(chuàng)建的子程序保存的程序
管理員FILE允許用戶使用select…into outfile、load data infile 將數(shù)據(jù)從文件讀入表或從表讀入文件服務(wù)器主機上的文件訪問
CREATE TEMPORARY TABLES允許用戶創(chuàng)建臨時表服務(wù)器管理
LOCK TABLES允許用戶使用LOCK TABLES服務(wù)器管理
CREATE USER允許用戶使用CREATE USER,DORP USER,RENAME USER,REVOKE ALL PRIVILEGES服務(wù)器管理
PROCESS允許用戶使用show processlist 查看線程服務(wù)器管理
RELOAD允許用戶使用flush 、重載授權(quán)表、清空授權(quán)、主機、日志等服務(wù)器管理
REPLICATION CLIENT允許用戶詢問從屬服務(wù)器或主機服務(wù)器地址服務(wù)器管理
REPLICATION SLAVE用于主從復(fù)制性從屬服務(wù)器(從主服務(wù)器中讀取二進制日志文件)服務(wù)器管理
SHOW DATABASES允許使用show databases 查看所有的數(shù)據(jù)庫列表,沒有這個權(quán)限,用戶只能看到擁有權(quán)限的數(shù)據(jù)庫服務(wù)器管理
SHUTDOWN允許使用mysqladmin shutdown 關(guān)閉mysql服務(wù)器服務(wù)器管理
SUPER允許使用change master,kill,purge master logs 和set global 語句,mysqladmin debug 命令,當(dāng)數(shù)據(jù)庫達到max_connections 允許連接一次服務(wù)器管理
特殊all\all perivileges授予所有權(quán)限服務(wù)器管理
usage僅允許用戶登錄,但不授予權(quán)限服務(wù)器管理

MySQL 賦予用戶權(quán)限命令的簡單格式可概括為:

grant 權(quán)限 on 數(shù)據(jù)庫對象 to 用戶

一、grant 普通數(shù)據(jù)用戶,查詢、插入、更新、刪除 數(shù)據(jù)庫中所有表數(shù)據(jù)的權(quán)利。

grant select on testdb.* to common_user@'%'
grant insert on testdb.* to common_user@'%'
grant update on testdb.* to common_user@'%'
grant delete on testdb.* to common_user@'%'

或者,用一條 MySQL 命令來替代:

grant select, insert, update, delete on testdb.* to common_user@'%'

二、grant 數(shù)據(jù)庫開發(fā)人員,創(chuàng)建表、索引、視圖、存儲過程、函數(shù)。。。等權(quán)限。

grant 創(chuàng)建、修改、刪除 MySQL 數(shù)據(jù)表結(jié)構(gòu)權(quán)限。

grant create on testdb.* to developer@'192.168.0.%';
grant alter  on testdb.* to developer@'192.168.0.%';
grant drop   on testdb.* to developer@'192.168.0.%';

grant 操作 MySQL 外鍵權(quán)限。

grant references on testdb.* to developer@'192.168.0.%';grant 操作 MySQL 臨時表權(quán)限。 
grant create temporary tables on testdb.* to developer@'192.168.0.%';grant 操作 MySQL 索引權(quán)限。 
grant index on  testdb.* to developer@'192.168.0.%';grant 操作 MySQL 視圖、查看視圖源代碼 權(quán)限。 
grant create view on testdb.* to developer@'192.168.0.%';
grant show   view on testdb.* to developer@'192.168.0.%';

grant 操作 MySQL 存儲過程、函數(shù) 權(quán)限。

grant create routine on testdb.* to developer@'192.168.0.%';  -- now, can show procedure status
grant alter  routine on testdb.* to developer@'192.168.0.%';  -- now, you can drop a procedure
grant execute        on testdb.* to developer@'192.168.0.%';

三、grant 普通 DBA 管理某個 MySQL 數(shù)據(jù)庫的權(quán)限。

grant all privileges on testdb to dba@'localhost'

其中,關(guān)鍵字 “privileges” 可以省略。

四、grant 高級 DBA 管理 MySQL 中所有數(shù)據(jù)庫的權(quán)限。

grant all on *.* to dba@'localhost'

五、MySQL grant 權(quán)限,分別可以作用在多個層次上。

1. grant 作用在整個 MySQL 服務(wù)器上:

grant select on *.* to dba@localhost; -- dba 可以查詢 MySQL 中所有數(shù)據(jù)庫中的表。
grant all    on *.* to dba@localhost; -- dba 可以管理 MySQL 中的所有數(shù)據(jù)庫

2. grant 作用在單個數(shù)據(jù)庫上:

grant select on testdb.* to dba@localhost; -- dba 可以查詢 testdb 中的表。

3. grant 作用在單個數(shù)據(jù)表上:

grant select, insert, update, delete on testdb.orders to dba@localhost;

4. grant 作用在表中的列上:

grant select(id, se, rank) on testdb.apache_log to dba@localhost;

5. grant 作用在存儲過程、函數(shù)上:

grant execute on procedure testdb.pr_add to 'dba'@'localhost'
grant execute on function  testdb.fn_add to 'dba'@'localhost'

六、查看 MySQL 用戶權(quán)限

查看當(dāng)前用戶(自己)權(quán)限:

show grants;

查看其他 MySQL 用戶權(quán)限:

show grants for dba@localhost;

七、撤銷已經(jīng)賦予給 MySQL 用戶權(quán)限的權(quán)限。

revoke 跟 grant 的語法差不多,只需要把關(guān)鍵字 “to” 換成 “from” 即可:

grant  all on *.* to   dba@localhost;
revoke all on *.* from dba@localhost;

八、MySQL grant、revoke 用戶權(quán)限注意事項

1. grant, revoke 用戶權(quán)限后,該用戶只有重新連接 MySQL 數(shù)據(jù)庫,權(quán)限才能生效。

2. 如果想讓授權(quán)的用戶,也可以將這些權(quán)限 grant 給其他用戶,需要選項 “grant option“

grant select on testdb.* to dba@localhost with grant option;

這個特性一般用不到。實際中,數(shù)據(jù)庫權(quán)限最好由 DBA 來統(tǒng)一管理。

----------------------------------------------------------------------------------------------

授權(quán)命令GRANT 語句的語法如下: 
GRANT privileges (columns) 
ON what 
TO user IDENTIFIEDBY "password" 
WITH GRANT OPTION 
對用戶授權(quán) 
mysql>grant rights on database.* to user@host identified by "pass"; 
例1: 
增加一個用戶test1密碼為abc,讓他可以在任何主機上登錄,并對所有數(shù)據(jù)庫有查詢、插入、修改、刪除的權(quán)限。 
grant select,insert,update,delete on *.* to test1@"%" Identified by "abc"; 
ON 子句中*.* 說明符的意思是“所有數(shù)據(jù)庫,所有的表” 
例2: 
增加一個用戶test2密碼為abc, 讓他只可以在localhost上登錄,并可以對數(shù)據(jù)庫mydb進行查詢、插入、修改、刪除的操作。 
grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc"; 
例子3 
增加一個用戶custom,他能從主機localhost、server.domain和whitehouse.gov連接。他只想要從 localhost存取bankaccount數(shù)據(jù)庫,從whitehouse.gov存取expenses數(shù)據(jù)庫和從所有3臺主機存取customer 數(shù)據(jù)庫。他想要從所有3臺主機上使用口令stupid。

為了使用GRANT語句設(shè)置個用戶的權(quán)限,運行這些命令: 
shell> mysql --user=root mysql 
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP 
ON bankaccount.* TO custom@localhost IDENTIFIED BY 'stupid'; 
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP 
ON expenses.* TO custom@whitehouse.gov IDENTIFIED BY 'stupid'; 
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP 
ON customer.* TO custom@'%' IDENTIFIED BY 'stupid'; 
============================================== 
權(quán)限信息用user、db、host、tables_priv和columns_priv表被存儲在mysql數(shù)據(jù)庫中(即在名為mysql的數(shù)據(jù)庫中)。 
權(quán)限 列 Context 
select Select_priv 表 
insert Insert_priv 表 
update Update_priv 表 
delete Delete_priv 表 
index Index_priv 表 
alter Alter_priv 表 
create Create_priv 數(shù)據(jù)庫、表或索引 
drop Drop_priv 數(shù)據(jù)庫或表 
grant Grant_priv 數(shù)據(jù)庫或表 
references References_priv 數(shù)據(jù)庫或表 
reload Reload_priv 服務(wù)器管理 
shutdown Shutdown_priv 服務(wù)器管理 
process Process_priv 服務(wù)器管理 
file File_priv 在服務(wù)器上的文件存取

1.select、insert、update和delete權(quán)限 允許你在一個數(shù)據(jù)庫現(xiàn)有的表上實施操作,是基本權(quán)限 
2.alter權(quán)限允許你使用ALTER TABLE 
3.create和drop權(quán)限允許你創(chuàng)建新的數(shù)據(jù)庫和表,或拋棄(刪除)現(xiàn)存的數(shù)據(jù)庫和表 如果你將mysql數(shù)據(jù)庫的drop權(quán)限授予一個用戶,該用戶能拋棄存儲了MySQL存取權(quán)限的數(shù)據(jù)庫! 
4.grant權(quán)限允許你把你自己擁有的那些權(quán)限授給其他的用戶。 
你不能明顯地指定一個給定用戶應(yīng)該被拒絕存取。即,你不能明顯地匹配一個用戶并且然后拒絕連接。你不能指定一個用戶有權(quán)創(chuàng)建立或拋棄一個數(shù)據(jù)庫中的表,也不能創(chuàng)建或拋棄數(shù)據(jù)庫本身。 可以同時列出許多被授予的單個權(quán)限。 
例如,如果想讓用戶能讀取和修改已有表的內(nèi)容,但又不允許創(chuàng)建新表或刪除表,可按如下授權(quán): 
GRANT SELECT,INSERT,DELETE,UPDATE ON samp_db.* TO 'user'@'%' IDENTIFIEDBY "pass"

以上是我從別的地方拷貝過來后稍作修改的文字,下面自己寫一些需要注意的東西。

上述就是小編為大家分享的怎么分析Mysql 權(quán)限管理了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI