共計 5601 個字符,預計需要花費 15 分鐘才能閱讀完成。
這期內容當中丸趣 TV 小編將會給大家帶來有關怎么分析 Mysql 權限管理,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
Mysql 賬戶權限信息存儲在 mysql 數據庫 user、db、host、table_priv、colunms_priv 和 procs_priv 表中,在 Mysql 啟動時服務器將這些數據庫表內容讀入內存中。
Mysql 權限層級主要分為:服務器、數據庫、表、列。按權限的使用環境則主要分為:普通權限、管理員權限、特殊權限,其中普通權限主要應用于應用程序鏈接數據庫,管理員權限則主要用于服務器管理。
mysql 權限列表詳解:
分類權限描述應用層級普通權限
(應用程序)CREATE 允許用戶創建數據庫或表數據庫、表或索引 DROP 允許用戶刪除數據庫或表數據庫或表 GRANT OPTION 允許用戶授予權限數據庫、表或保存的程序 ALTER 允許用戶改變表結構表 DELETE 允許用戶刪除現存表的行表 INDEX 允許用戶創建、修改表索引表 INSERT 允許用戶在表中插入新的記錄表 SELECT 允許用戶查看表記錄表 UPDATE 允許用戶修改表中現有的記錄表 CREATE VIEW 允許用戶創建視圖視圖 SHOW VIEW 允許用戶查看視圖創建語句視圖 ALTER ROUTINE 允許用戶修改存儲過程、函數保存的程序 CREATE ROUTINE 允許用戶創建存儲過程、函數保存的程序 EXECUTE 允許用戶允許以創建的子程序保存的程序管理員 FILE 允許用戶使用 select…into outfile、load data infile 將數據從文件讀入表或從表讀入文件服務器主機上的文件訪問 CREATE TEMPORARY TABLES 允許用戶創建臨時表服務器管理 LOCK TABLES 允許用戶使用 LOCK TABLES 服務器管理 CREATE USER 允許用戶使用 CREATE USER,DORP USER,RENAME USER,REVOKE ALL PRIVILEGES 服務器管理 PROCESS 允許用戶使用 show processlist 查看線程服務器管理 RELOAD 允許用戶使用 flush、重載授權表、清空授權、主機、日志等服務器管理 REPLICATION CLIENT 允許用戶詢問從屬服務器或主機服務器地址服務器管理 REPLICATION SLAVE 用于主從復制性從屬服務器(從主服務器中讀取二進制日志文件)服務器管理 SHOW DATABASES 允許使用 show databases 查看所有的數據庫列表,沒有這個權限,用戶只能看到擁有權限的數據庫服務器管理 SHUTDOWN 允許使用 mysqladmin shutdown 關閉 mysql 服務器服務器管理 SUPER 允許使用 change master,kill,purge master logs 和 set global 語句,mysqladmin debug 命令,當數據庫達到 max_connections 允許連接一次服務器管理特殊 all\all perivileges 授予所有權限服務器管理 usage 僅允許用戶登錄,但不授予權限服務器管理
MySQL 賦予用戶權限命令的簡單格式可概括為:
grant 權限 on 數據庫對象 to 用戶
一、grant 普通數據用戶,查詢、插入、更新、刪除 數據庫中所有表數據的權利。
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 數據庫開發人員,創建表、索引、視圖、存儲過程、函數。。。等權限。
grant 創建、修改、刪除 MySQL 數據表結構權限。
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 外鍵權限。
grant references on testdb.* to developer@ 192.168.0.% grant 操作 MySQL 臨時表權限。
grant create temporary tables on testdb.* to developer@ 192.168.0.% grant 操作 MySQL 索引權限。
grant index on testdb.* to developer@ 192.168.0.% grant 操作 MySQL 視圖、查看視圖源代碼 權限。
grant create view on testdb.* to developer@ 192.168.0.%
grant show view on testdb.* to developer@ 192.168.0.%
grant 操作 MySQL 存儲過程、函數 權限。
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 數據庫的權限。
grant all privileges on testdb to dba@ localhost
其中,關鍵字“privileges”可以省略。
四、grant 高級 DBA 管理 MySQL 中所有數據庫的權限。
grant all on *.* to dba@ localhost
五、MySQL grant 權限,分別可以作用在多個層次上。
1. grant 作用在整個 MySQL 服務器上:
grant select on *.* to dba@localhost; -- dba 可以查詢 MySQL 中所有數據庫中的表。grant all on *.* to dba@localhost; -- dba 可以管理 MySQL 中的所有數據庫
2. grant 作用在單個數據庫上:
grant select on testdb.* to dba@localhost; -- dba 可以查詢 testdb 中的表。
3. grant 作用在單個數據表上:
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 作用在存儲過程、函數上:
grant execute on procedure testdb.pr_add to dba @ localhost
grant execute on function testdb.fn_add to dba @ localhost
六、查看 MySQL 用戶權限
查看當前用戶(自己)權限:
show grants;
查看其他 MySQL 用戶權限:
show grants for dba@localhost;
七、撤銷已經賦予給 MySQL 用戶權限的權限。
revoke 跟 grant 的語法差不多,只需要把關鍵字“to”換成“from”即可:
grant all on *.* to dba@localhost;
revoke all on *.* from dba@localhost;
八、MySQL grant、revoke 用戶權限注意事項
1. grant, revoke 用戶權限后,該用戶只有重新連接 MySQL 數據庫,權限才能生效。
2. 如果想讓授權的用戶,也可以將這些權限 grant 給其他用戶,需要選項“grant option“
grant select on testdb.* to dba@localhost with grant option;
這個特性一般用不到。實際中,數據庫權限最好由 DBA 來統一管理。
———————————————————————————————-
授權命令 GRANT 語句的語法如下:
GRANT privileges (columns)
ON what
TO user IDENTIFIEDBY password
WITH GRANT OPTION
對用戶授權
mysql grant rights on database.* to user@host identified by pass
例 1:
增加一個用戶 test1 密碼為 abc,讓他可以在任何主機上登錄,并對所有數據庫有查詢、插入、修改、刪除的權限。
grant select,insert,update,delete on *.* to test1@ % Identified by abc
ON 子句中 *.* 說明符的意思是“所有數據庫,所有的表”
例 2:
增加一個用戶 test2 密碼為 abc, 讓他只可以在 localhost 上登錄,并可以對數據庫 mydb 進行查詢、插入、修改、刪除的操作。
grant select,insert,update,delete on mydb.* to test2@localhost identified by abc
例子 3
增加一個用戶 custom,他能從主機 localhost、server.domain 和 whitehouse.gov 連接。他只想要從 localhost 存取 bankaccount 數據庫,從 whitehouse.gov 存取 expenses 數據庫和從所有 3 臺主機存取 customer 數據庫。他想要從所有 3 臺主機上使用口令 stupid。
為了使用 GRANT 語句設置個用戶的權限,運行這些命令:
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
==============================================
權限信息用 user、db、host、tables_priv 和 columns_priv 表被存儲在 mysql 數據庫中 (即在名為 mysql 的數據庫中)。
權限 列 Context
select Select_priv 表
insert Insert_priv 表
update Update_priv 表
delete Delete_priv 表
index Index_priv 表
alter Alter_priv 表
create Create_priv 數據庫、表或索引
drop Drop_priv 數據庫或表
grant Grant_priv 數據庫或表
references References_priv 數據庫或表
reload Reload_priv 服務器管理
shutdown Shutdown_priv 服務器管理
process Process_priv 服務器管理
file File_priv 在服務器上的文件存取
1.select、insert、update 和 delete 權限 允許你在一個數據庫現有的表上實施操作,是基本權限
2.alter 權限允許你使用 ALTER TABLE
3.create 和 drop 權限允許你創建新的數據庫和表,或拋棄 (刪除) 現存的數據庫和表 如果你將 mysql 數據庫的 drop 權限授予一個用戶,該用戶能拋棄存儲了 MySQL 存取權限的數據庫!
4.grant 權限允許你把你自己擁有的那些權限授給其他的用戶。
你不能明顯地指定一個給定用戶應該被拒絕存取。即,你不能明顯地匹配一個用戶并且然后拒絕連接。你不能指定一個用戶有權創建立或拋棄一個數據庫中的表,也不能創建或拋棄數據庫本身。可以同時列出許多被授予的單個權限。
例如,如果想讓用戶能讀取和修改已有表的內容,但又不允許創建新表或刪除表,可按如下授權:
GRANT SELECT,INSERT,DELETE,UPDATE ON samp_db.* TO user @ % IDENTIFIEDBY pass
以上是我從別的地方拷貝過來后稍作修改的文字,下面自己寫一些需要注意的東西。
上述就是丸趣 TV 小編為大家分享的怎么分析 Mysql 權限管理了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注丸趣 TV 行業資訊頻道。