參考代碼:
--使用mysql數據庫
USE mysql
-- 創建用戶
CREATE USER myuser IDENTIFIED BY ‘mypass‘;
-- 查看用戶
SELECT user, host, authentication_string FROM USER WHERE USER=‘myuser‘;
-- 修改用戶密碼
update user set authentication_string=‘‘ where user=‘myuser‘;
ALTER USER ‘myuser‘@‘%‘ IDENTIFIED BY ‘mypass‘;
-- 刪除用戶
DROP USER myuser;
-- 查看權限
SHOW GRANTS FOR myuser;
-- 授予權限
-- grant all privileges on databasename.tablename to ‘user‘@‘host‘ identified by ‘password‘;
-- 授予myuser用戶全局級全部權限:
GRANT ALL PRIVILEGES ON *.* TO ‘myuser‘@‘%‘ IDENTIFIED BY ‘mypass‘ WITH GRANT OPTION;
-- 授予myuser用戶針對testdb數據庫全部權限:
GRANT ALL PRIVILEGES ON testdb.* TO ‘myuser‘
-- 生效(刷新權限)
FLUSH PRIVILEGES;
-- 撤銷權限
-- revoke privileges on databasename.tablename from ‘username‘@‘host‘;
REVOKE ALL PRIVILEGES FROM myuser;
GRANT命令說明
priveleges(權限列表),可以是all priveleges, 表示所有權限,也可以是select、update等權限,多個權限的名詞,相互之間用逗號分開。
on用來指定權限針對哪些庫和表。
. 中前面的號用來指定數據庫名,后面的號用來指定表名。
to 表示將權限賦予某個用戶,@后面接限制的主機,可以是IP,IP段,域名以及%,%表示任何地方。注意:這里%有的版本不包括本地,以前碰到過給某個用戶設置了%允許任何地方登錄,但是在本地登錄不了,這個和版本有關系,遇到這個問題再加一個localhost的用戶就可以了。
identified by指定用戶的登錄密碼,該項可以省略。
WITH GRANT OPTION 這個選項表示該用戶可以將自己擁有的權限授權給別人。注意:經常有人在創建操作用戶的時候不指定WITH GRANT OPTION選項導致后來該用戶不能使用GRANT命令創建用戶或者給其它用戶授權。
備注:可以使用GRANT重復給用戶添加權限,權限疊加,比如你先給用戶添加一個select權限,然后又給用戶添加一個insert權限,那么該用戶就同時擁有了select和insert權限。
授權原則說明
權限控制主要是出于安全因素,因此需要遵循一下幾個經驗原則:
只授予能滿足需要的最小權限,防止用戶干壞事。比如用戶只是需要查詢,那就只給select權限就可以了,不要給用戶賦予update、insert或者delete權限。
創建用戶的時候限制用戶的登錄主機,一般是限制成指定IP或者內網IP段。
初始化數據庫的時候刪除沒有密碼的用戶。安裝完數據庫的時候會自動創建一些用戶,這些用戶默認沒有密碼。
為每個用戶設置滿足密碼復雜度的密碼。
定期清理不需要的用戶。回收權限或者刪除用戶。