mysql 數據庫授權
授權命令GRANT 語句的語法如下:
GRANT privileges (columns)
ON what
TO user IDENTIFIEDBY “password”
WITH GRANT OPTION ;
FLUSH PRIVILEGES;
一、普通用戶授權
查詢、插入、更新、刪除:
GRANT select ON *.* to username@'%';
GRANT insert ON *.* to username@'%';
GRANT update ON *.* to username@'%';
GRANT delete ON *.* to username@'%';
用一條命令來替代:
GRANT select, insert, update, delete ON testdb.* to username@'%';
管理某個MySQL數據庫權限:
GRANT all privileges ON testdb to username@'localhost';
FLUSH PRIVILEGES;
二、高級DBA管理MySQL中所有數據庫的權限:
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'passwd' WITH GRANT OPTION;
FLUSH PRIVILEGES;
三、查看 MySQL 用戶權限
查看當前用戶權限:
show grants;
查看其他用戶權限:
show grants for username@localhost;
四、撤銷用戶權限:
revoke all ON *.* from username@localhost;
FLUSH PRIVILEGES;
五、實例操作
1.增加用戶test1
密碼爲passwd, 讓他只可以在localhost上登錄,並可以對數據庫mydb進行查詢、插入、修改、刪除的操作。
GRANT select,insert,update,delete ON mydb.* to test2@localhost identified by "passwd";
FLUSH PRIVILEGES;
2.增加用戶test2
密碼爲passwd,可以在任何主機上登錄,並對所有數據庫有查詢、插入、修改、刪除的權限。
GRANT select,insert,update,delete ON *.* to test1@'%' Identified by "passwd";
FLUSH PRIVILEGES;
3.增加用戶test3
密碼爲passwd,僅在172.27.11.222主機上登錄,並對所有數據庫有查詢、插入、修改、刪除的權限。
GRANT select,insert,update,delete ON *.* to test1@'172.27.11.222' Identified by "passwd";
FLUSH PRIVILEGES;
權限說明:
1.select、insert、update和delete權限允許你在一個數據庫現有的表上實施操作,是基本權限
2.alter權限允許你使用ALTER TABLE
3.create和drop權限允許你創建新的數據庫和表,或拋棄(刪除)現存的數據庫和表,如果將mysql數據庫的drop權限授予一個用戶,該用戶能拋棄存儲了MySQL存取權限的數據庫!
4.grant權限允許你把你自己擁有的那些權限授給其他的用戶。
例如:
用戶能讀取和修改已有表的內容,不允許創建新表或刪除表,可按如下授權:
GRANT SELECT,INSERT,DELETE,UPDATE ON test_db.* TO ‘user’@’%’ IDENTIFIEDBY “pass”
mysql授權表共有5個表:user、db、host、tables_priv和columns_priv。
授權表說明:
user表:
user表列出可以連接服務器的用戶及其口令,並且它指定他們有哪種全局(超級用戶)權限。在user表啓用的任何權限均是全局權限,並適用於所有數據庫。例如,如果你啓用了DELETE權限,在這裏列出的用戶可以從任何表中刪除記錄,所以在你這樣做之前要認真考慮。db表:
db表列出數據庫,而用戶有權限訪問它們。在這裏指定的權限適用於一個數據庫中的所有表。host表:
host表與db表結合使用在一個較好層次上控制特定主機對數據庫的訪問權限,這可能比單獨使用db好些。這個表不受GRANT和REVOKE語句的影響,所以,你可能發覺你根本不是用它。tables_priv表:
tables_priv表指定表級權限,在這裏指定的一個權限適用於一個表的所有列。columns_priv表:
columns_priv表指定列級權限。這裏指定的權限適用於一個表的特定列。