您好,登錄后才能下訂單哦!
這期內(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 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 創(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 all privileges on testdb to dba@'localhost'
其中,關(guān)鍵字 “privileges” 可以省略。
grant all on *.* to dba@'localhost'
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'
查看當(dāng)前用戶(自己)權(quán)限:
show grants;
查看其他 MySQL 用戶權(quán)限:
show grants for dba@localhost;
revoke 跟 grant 的語法差不多,只需要把關(guān)鍵字 “to” 換成 “from” 即可:
grant all on *.* to dba@localhost; revoke all on *.* from dba@localhost;
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è)資訊頻道。
免責(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)容。