共計 6049 個字符,預計需要花費 16 分鐘才能閱讀完成。
本篇內容主要講解“mysql 中的權限有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓丸趣 TV 小編來帶大家學習“mysql 中的權限有哪些”吧!
mysql 權限有:1、USAGE,只能用于數據庫登錄,不能執行任何操作;2、SELECT,允許使用 SELECT 語句查看表內容的權限;3、super,允許執行一系列數據庫管理命令;4、process,允許查看進程信息;5、Shutdown 等。
本教程操作環境:windows7 系統、mysql8 版本、Dell G3 電腦。
mysql 各種權限:
1、USAGE:連接(登錄)權限,建立一個用戶,就會自動授予其 usage 權限(默認授予)。
該權限只能用于數據庫登錄,不能執行任何操作,且該權限不能被回收,即使使用 REVOKE 也不能刪除用戶權限。
grant usage on *.* to iap @ % identified by iap123
2、數據類下權限
2.1、SELECT:使用 SELECT 查看表內容的權限,擁有此權限才能執行 SELECT 查詢。
grant select on testdb.* to iap @ %
2.2、insert
必須有 insert 的權限,才可以使用 insert into ….. values….
2.3、update
必須有 update 的權限,才可以使用 update table。
update shop set price=3.5 where article=0001 and dealer= A
2.4、delete
必須有 delete 的權限,才可以使用 delete from ….where….(刪除表中的記錄)
2.5、file (不是針對某個數據庫的,因此須使用 on *.* 來進行)
file 權限指的是對服務器主機上文件的訪問,數據庫用戶擁有 file 權限才可以執行 select ..into outfile,load data infile…操作.
但是不要把 file, process, super 權限授予管理員以外的賬號,這樣存在嚴重的安全隱患。
grant file on *.* to iap @ %
導出文件: select … into outfile 文件路徑
查看導入、導出路徑設置:show variables like %sec%
secure-file-priv 參數是用來限制 load data, select … outfile, and load_file() 傳到哪個指定目錄的。
具體修改方法:https://blog.csdn.net/weixin_39631030/article/details/79873936
導入文件: load data infile 文件絕對路徑 into table 表名;
具體使用方法:https://www.cnblogs.com/darange/p/10508714.html
3、結構權限
3.1、CREATE:創建表的權限。必須有 create 的權限,才可以使用 create table。
grant create on testdb.* to iap @ %
3.2、alter
必須有 alter 的權限,才可以使用 alter table。
grant alter on testdb.* to iap @ %
例:alter table shop modify dealer char(15);
3.3、index
必須擁有 index 權限,才能執行 [create |drop] index
grant index on testdb.* to iap @ %
create index ix_shop on shop(article);
drop index ix_shop on shop;
3.4、drop
必須有 drop 的權限,才可以使用
grant drop on testdb.* to iap @ %
drop database db_name;
drop table table_name;
drop view view_name;
drop index index_name;
3.5、create temporary tables(注意這里是 tables,不是 table)
必須有 create temporary tables 的權限,才可以使用 create temporary tables.
-- 授予 iap@localhost 創建臨時表權限
grant create temporary tables on testdb.* to iap @ %
-- 例 : iap 用戶登錄,創建臨時表
create temporary table tt1(id int);
3.6、show view
必須擁有 show view 權限,才能執行 show create view。
grant show view on testdb.* to iap @ %
show create view view_shop;
3.7、CREATE ROUTINE:創建 procedure 或 function 的權限。
如果用戶有 create routine 權限那么他就可以創建 procedure | function。
create {procedure|function}
如果用戶創建了 procedure | function 那么 mysql 自動授予 EXECUTE, ALTER ROUTINE 權限給它的創建者:
grant create routine on testdb.* to iap @ %
3.8、alter routine
必須具有 alter routine 的權限,才可以使用
{alter |drop} {procedure|function}
-- 授予 testdb 數據庫 修改 / 刪除 存儲過程 / 函數的權限
grant alter routine on testdb.* to iap @ %
3.9、excute
執行存在的 Functions、Procedures。
grant execute on testdb.* to iap @ %
3.10、create view
必須有 create view 的權限,才可以使用 create view 創建視圖。
-- 授予 iap @ localhost 創建視圖權限
grant create view on testdb.* to iap @ %
-- 例 : iap @ localhost 登錄,創建 v_shop 視圖
create view v_shop as select price from shop;
3.11、event
event : 允許查詢,創建,修改,刪除 MySQL 事件.
事件適用范圍:對于每隔一段時間就有固定需求的操作,如創建表,刪除數據等操作,可以使用 event 來處理。
詳細說明:https://www.cnblogs.com/langtianya/p/5445528.html
例如:使用 event 在每月的 1 日凌晨 1 點自動創建下個月需要使用的三張表。
3.12、Trigger
Trigger 權限代表允許創建,刪除,執行,顯示觸發器的權限.
4、管理權限
4.1、grant option
擁有 grant option,就可以將自己擁有的權限授予其他用戶(僅限于自己已經擁有的權限)
grant grant option on testdb.* to iap @ %
4.2、super
Super 權限代表允許執行一系列數據庫管理命令,包括 kill 強制關閉某個連接命令,change master to 創建復制關系命令,以及 create/alter/drop server 等命令, 修改全局變量的 SET 語句
mysql grant super on *.* to p1@localhost;
mysql purge master logs before ‘mysql-bin.000006′;
4.3、process
Process 權限代表允許查看 MySQL 中的進程信息,比如執行 show processlist, mysqladmin processlist, show engine 等命令
通過這個權限,用戶可以執行 SHOW PROCESSLIST 和 KILL 命令。默認情況下,每個用戶都可以執行 SHOW PROCESSLIST 命令,但是只能查詢本用戶的進程。
show PROCESSLIST
另外,管理權限(如 super,process,file 等)不能夠指定某個數據庫,on 后面必須跟 *.*
grant super on *.* to p1@localhost;
4.4、Shutdown
shutdown 權限代表允許關閉數據庫實例,執行語句包括 : mysqladmin shutdown.
4.5、show database
通過 show database 只能看到你擁有的某些權限的數據庫,除非你擁有全局 SHOW DATABASES 權限。
對于 iap@%t 用戶來說,沒有對 mysql 數據庫的權限,所以以此身份登陸查詢時,無法看到 mysql 數據庫:
4.6、reload
必須擁有 reload 權限,才可以執行 flush [tables | logs | privileges]
reload 是 administrative 級的權限,即 server administration;
這類權限包括:create user, process, reload, replication client, replication slave, show databases, shutdown, super
這類權限的授權不是針對某個數據庫的,因此須使用 on *.* 來進行
grant reload on *.* to iap @ %
4.7、lock tables
必須擁有 lock tables 權限,才可以使用 lock tables
grant lock tables on testdb.* to iap @ localhost
lock tables a1 read;
unlock tables;
4.8、references
有了 references 權限,用戶就可以將其它表的一個字段作為某一個表的外鍵約束。
4.9、replication client
Replication client 權限代表允許執行 show master status, show slave status, show binary logs 命令
4.10、replication slave
Replication slave 權限代表允許 slave 主機通過此用戶連接 master 以便建立主從復制關系,可以查看從服務器,從主服務器讀取二進制日志。
grant replication slave on *.* to iap @ %
show slave hosts;
show binlog events;
4.11、Create user
Create user 權限代表允許創建、修改、刪除、重命名 user 的權限。
5、權限類型 表格
5.1、授予數據庫權限時,權限類型 表格:
權限名稱對應 user 表中的字段說明 SELECTSelect_priv 表示授予用戶可以使用 SELECT 語句訪問特定數據庫中所有表和視圖的權限。INSERTInsert_priv 表示授予用戶可以使用 INSERT 語句向特定數據庫中所有表添加數據行的權限。DELETEDelete_priv 表示授予用戶可以使用 DELETE 語句刪除特定數據庫中所有表的數據行的權限。UPDATEUpdate_priv 表示授予用戶可以使用 UPDATE 語句更新特定數據庫中所有數據表的值的權限。REFERENCESReferences_priv 表示授予用戶可以創建指向特定的數據庫中的表外鍵的權限。CREATECreate_priv 表示授權用戶可以使用 CREATE TABLE 語句在特定數據庫中創建新表的權限。ALTERAlter_priv 表示授予用戶可以使用 ALTER TABLE 語句修改特定數據庫中所有數據表的權限。SHOW VIEWShow_view_priv 表示授予用戶可以查看特定數據庫中已有視圖的視圖定義的權限。CREATE ROUTINECreate_routine_priv 表示授予用戶可以為特定的數據庫創建存儲過程和存儲函數的權限。ALTER ROUTINEAlter_routine_priv 表示授予用戶可以更新和刪除數據庫中已有的存儲過程和存儲函數的權限。INDEXIndex_priv 表示授予用戶可以在特定數據庫中的所有數據表上定義和刪除索引的權限。DROPDrop_priv 表示授予用戶可以刪除特定數據庫中所有表和視圖的權限。CREATE TEMPORARY TABLESCreate_tmp_table_priv 表示授予用戶可以在特定數據庫中創建臨時表的權限。CREATE VIEWCreate_view_priv 表示授予用戶可以在特定數據庫中創建新的視圖的權限。EXECUTE ROUTINEExecute_priv 表示授予用戶可以調用特定數據庫的存儲過程和存儲函數的權限。LOCK TABLESLock_tables_priv 表示授予用戶可以鎖定特定數據庫的已有數據表的權限。ALL 或 ALL PRIVILEGES 或 SUPERSuper_priv 表示以上所有權限 / 超級權限
5.2、授予表權限時,權限類型 可以指定為以下值:
權限名稱對應 user 表中的字段說明 SELECTSelect_priv 授予用戶可以使用 SELECT 語句進行訪問特定表的權限 INSERTInsert_priv 授予用戶可以使用 INSERT 語句向一個特定表中添加數據行的權限 DELETEDelete_priv 授予用戶可以使用 DELETE 語句從一個特定表中刪除數據行的權限 DROPDrop_priv 授予用戶可以刪除數據表的權限 UPDATEUpdate_priv 授予用戶可以使用 UPDATE 語句更新特定數據表的權限 ALTERAlter_priv 授予用戶可以使用 ALTER TABLE 語句修改數據表的權限 REFERENCESReferences_priv 授予用戶可以創建一個外鍵來參照特定數據表的權限 CREATECreate_priv 授予用戶可以使用特定的名字創建一個數據表的權限 INDEXIndex_priv 授予用戶可以在表上定義索引的權限 ALL 或 ALL PRIVILEGES 或 SUPERSuper_priv 所有的權限名
5.3、授予列權限
授予列權限時,權限類型 的值只能指定為 SELECT、INSERT 和 UPDATE,同時權限的后面需要加上列名列表 column-list。
5.4、最有效率的權限是用戶權限。
授予用戶權限時,權限類型 除了可以指定為授予數據庫權限時的所有值之外,還可以是下面這些值:
CREATE USER:表示授予用戶可以創建和刪除新用戶的權限。
SHOW DATABASES:表示授予用戶可以使用 SHOW DATABASES 語句查看所有已有的數據庫的定義的權限。
到此,相信大家對“mysql 中的權限有哪些”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!