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 identified by "pass";
例1:
增加一個使用者test1密碼為abc,讓他可以在任何主機上登入,並對所有資料庫有查詢、插入、修改、刪除的許可權。
grant select,insert,update,delete on *.* to " Identified by "abc";
ON 子句中*.* 說明符的意思是“所有資料庫,所有的表”
例2:
增加一個使用者test2密碼為abc, 讓他只可以在localhost上登入,並可以對資料庫mydb進行查詢、插入、修改、刪除的操作。
grant select,insert,update,delete on mydb.* to 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 IDENTIFIEDBY "pass"
以上是我從別的地方複製過來後稍作修改的文字,下面自己寫一些需要注意的東西。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29065182/viewspace-1161463/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Mysql——許可權管理MySql
- MySQL許可權管理MySql
- MySQL許可權管理實戰MySql
- 關於mysql許可權管理MySql
- mysql 管理:mysql 執行許可權(轉)MySql
- mysql使用者許可權管理MySql
- MySQL 使用者管理與許可權管理MySql
- mysql許可權MySql
- MySQL 許可權MySql
- MySQL 使用者及許可權管理?MySql
- MySQL使用者及許可權管理MySql
- MySQL之許可權管理和備份MySql
- MySQL使用者與許可權管理MySql
- MySQL5.7&8.0許可權-角色管理MySql
- Linux-許可權管理(ACL許可權)Linux
- MySQL資料庫許可權體系入門(4)---管理全域性許可權MySql資料庫
- PostgreSQL:許可權管理SQL
- oracle 許可權管理Oracle
- 4、許可權管理
- sql許可權管理SQL
- 許可權管理策略
- [MySQL光速入門]031 許可權管理MySql
- MySQL-03.使用者管理和許可權管理MySql
- MySQL資料庫許可權體系入門(5)---管理資料庫許可權MySql資料庫
- MySQL資料庫許可權體系入門(3)---管理使用者許可權MySql資料庫
- django開發之許可權管理(一)——許可權管理詳解(許可權管理原理以及方案)、不使用許可權框架的原始授權方式詳解Django框架
- Linux 許可權管理之目錄許可權限制Linux
- mysql 使用者及許可權管理 小結MySql
- Mysql許可權管理以及sql資料備份MySql
- mysql 使用者管理和許可權設定MySql
- mysql許可權參考MySql
- MySQL許可權問題MySql
- MySQL reload許可權MySql
- MySQL許可權系統MySql
- [玄月]MySQL許可權MySql
- MySQL 許可權詳解MySql
- Security 10:許可權管理
- SQL Server 許可權管理SQLServer