【%、localhost、'127.0.0.1'】
%表示允許遠程登錄,localhost表示只允許本機登錄,'127.0.0.1'表示只允許本機IP爲'127.0.0.1'的登錄。
【查看MySQL用戶權限】
show grants for syy@'localhost'; // 如果用戶名後面不接@'localhost',則默認是用戶名@'%'的形式。
【刪除MYSQL用戶】
#刪除了用戶,對應的權限也沒有了!
drop user syy@'%';
【撤銷MYSQL用戶權限】
#撤銷用戶的所有權限
REVOKE ALL PRIVILEGES ON `test`.* FROM 'syy'@'%';
#撤銷用戶的grant權限
REVOKE GRANT OPTION ON `test`.* FROM 'syy'@'%';
【新建MYSQL用戶】
create user syy@'%';
# 也可以創建用戶時直接設置密碼
create user syy@'%' identified by '123456';
【MySQL用戶授權】
#授予指定的權限(注意:授予指定權限之前,一定要撤銷用戶的ALL權限,否則這個用戶還是ALL權限。)
GRANT
SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ,
CREATE TEMPORARY TABLES, CREATE VIEW, EVENT, TRIGGER, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EXECUTE
ON `test`.* TO 'syy'@'%';
#只授予登錄權限
GRANT USAGE ON `test`.* TO 'syy'@'%';
# 授予所有權限。ALL允許做任何事(和root一樣),USAGE只允許登錄,其它什麼也不允許做。
GRANT ALL ON `test`.* TO 'syy'@'%'
# 授予所有權限、以及grant權限
GRANT ALL ON `test`.* TO 'syy'@'%' with grant option;(with grant option表示授予GRANT權限,一般不授予這個權限。)
#一句SQL實現新建MYSQL用戶並授權
grant all on test.* to 'syy'@'%' identified by '123456' with grant option;
註釋: 其中 test 爲數據庫
GRANT命令說明:
ALL PRIVILEGES 是表示所有權限,你也可以使用select、update等權限。
ON 用來指定權限針對哪些庫和表。
*.* 中前面的*號用來指定數據庫名,後面的*號用來指定表名。
TO 表示將權限賦予某個用戶。
syy@’localhost’ 表示jack用戶,@後面接限制的主機,可以是IP、IP段、域名以及%,%表示任何地方。注意:這裏%有的版本不包括本地,以前碰到過給某個用戶設置了%允許任何地方登錄,但是在本地登錄不了,這個和版本有關係,遇到這個問題再加一個localhost的用戶就可以了。
IDENTIFIED BY 指定用戶的登錄密碼。
WITH GRANT OPTION 這個選項表示該用戶可以將自己擁有的權限授權給別人。注意:經常有人在創建操作用戶的時候不指定WITH GRANT OPTION選項導致後來該用戶不能使用GRANT命令創建用戶或者給其它用戶授權。
備註:可以使用GRANT重複給用戶添加權限,權限疊加,比如你先給用戶添加一個select權限,然後又給用戶添加一個insert權限,那麼該用戶就同時擁有了select和insert權限。