參考代碼:
--使用mysql數(shù)據(jù)庫
USE mysql
-- 創(chuàng)建用戶
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;
-- 查看權(quán)限
SHOW GRANTS FOR myuser;
-- 授予權(quán)限
-- grant all privileges on databasename.tablename to ‘user‘@‘host‘ identified by ‘password‘评腺;
-- 授予myuser用戶全局級全部權(quán)限:
GRANT ALL PRIVILEGES ON *.* TO ‘myuser‘@‘%‘ IDENTIFIED BY ‘mypass‘ WITH GRANT OPTION;
-- 授予myuser用戶針對testdb數(shù)據(jù)庫全部權(quán)限:
GRANT ALL PRIVILEGES ON testdb.* TO ‘myuser‘
-- 生效(刷新權(quán)限)
FLUSH PRIVILEGES;
-- 撤銷權(quán)限
-- revoke privileges on databasename.tablename from ‘username‘@‘host‘;
REVOKE ALL PRIVILEGES FROM myuser;
GRANT命令說明
priveleges(權(quán)限列表)帘瞭,可以是all priveleges, 表示所有權(quán)限,也可以是select蒿讥、update等權(quán)限图张,多個權(quán)限的名詞,相互之間用逗號分開。
on用來指定權(quán)限針對哪些庫和表诈悍。
. 中前面的號用來指定數(shù)據(jù)庫名祸轮,后面的號用來指定表名。
to 表示將權(quán)限賦予某個用戶侥钳,@后面接限制的主機(jī)适袜,可以是IP,IP段舷夺,域名以及%苦酱,%表示任何地方售貌。注意:這里%有的版本不包括本地,以前碰到過給某個用戶設(shè)置了%允許任何地方登錄疫萤,但是在本地登錄不了颂跨,這個和版本有關(guān)系,遇到這個問題再加一個localhost的用戶就可以了扯饶。
identified by指定用戶的登錄密碼,該項可以省略恒削。
WITH GRANT OPTION 這個選項表示該用戶可以將自己擁有的權(quán)限授權(quán)給別人。注意:經(jīng)常有人在創(chuàng)建操作用戶的時候不指定WITH GRANT OPTION選項導(dǎo)致后來該用戶不能使用GRANT命令創(chuàng)建用戶或者給其它用戶授權(quán)尾序。
備注:可以使用GRANT重復(fù)給用戶添加權(quán)限多矮,權(quán)限疊加潜必,比如你先給用戶添加一個select權(quán)限练链,然后又給用戶添加一個insert權(quán)限嗡害,那么該用戶就同時擁有了select和insert權(quán)限。
授權(quán)原則說明
權(quán)限控制主要是出于安全因素兰怠,因此需要遵循一下幾個經(jīng)驗原則:
只授予能滿足需要的最小權(quán)限梦鉴,防止用戶干壞事。比如用戶只是需要查詢揭保,那就只給select權(quán)限就可以了尚揣,不要給用戶賦予update、insert或者delete權(quán)限掖举。
創(chuàng)建用戶的時候限制用戶的登錄主機(jī)快骗,一般是限制成指定IP或者內(nèi)網(wǎng)IP段。
初始化數(shù)據(jù)庫的時候刪除沒有密碼的用戶塔次。安裝完數(shù)據(jù)庫的時候會自動創(chuàng)建一些用戶方篮,這些用戶默認(rèn)沒有密碼。
為每個用戶設(shè)置滿足密碼復(fù)雜度的密碼励负。
定期清理不需要的用戶藕溅。回收權(quán)限或者刪除用戶继榆。