1.查看用戶
2.創建用戶
3.授權用戶
4.刪除用戶
5.設置與更改用戶密碼
6.撤銷用戶權限
1.查看用戶
查看用戶並沒有直接的SQL語句,而是進入 mysql數據庫的user表(這個mysql庫和user表都是一開始就有的),直接用 select * from user;來查看有什么用戶
由於在linux下比較難看,因為格式比較亂,所以我用了 SQLyog這個軟件登陸數據庫來操作。
代碼如下:
- use mysql;
- select * from user;
效果如上圖,最后用數據庫軟件,因為在linux下界面看不清效果,太亂了。
從上圖可以看到,會列出數據庫所有的用戶及權限
2.創建用戶
CREATE USER 'user_name'@'host' IDENTIFIED BY 'password';
user_name:要創建用戶的名字。
host:表示要這個新創建的用戶允許從哪台機登陸,如果只允許從本機登陸,則 填 ‘localhost’ ,如果允許從遠程登陸,則填 ‘%’
password:新創建用戶的登陸數據庫密碼,如果沒密碼可以不寫。
例:
CREATE USER ‘aaa’@‘localhost’ IDENTIFED BY ‘123456’; //表示創建的新用戶,名為aaa,這個新用戶密碼為123456,只允許本機登陸
CREATE USER 'bbb'@'%' IDENTIFED BY '123456';//表示新創建的用戶,名為bbb,這個用戶密碼為123456,可以從其他電腦遠程登陸mysql所在服務器
CREATE USER ‘ccc’@‘%’ ;//表示新創建的用戶ccc,沒有密碼,可以從其他電腦遠程登陸mysql服務器
我用 CREATE USER 'aaa'@‘%’;創建新用戶,再用 select * from user;查看用戶列表:
可以看出 有 aaa用戶了。但是可以看到 aaa 的權限很多都是 N,表示沒有權限,因為還要為用戶授予權限。
3.授權用戶
命令:GRANT privileges ON databasename.tablename TO ‘username’@‘host’
privileges:表示要授予什么權力,例如可以有 select , insert ,delete,update等,如果要授予全部權力,則填 ALL
databasename.tablename:表示用戶的權限能用在哪個庫的哪個表中,如果想要用戶的權限很作用於所有的數據庫所有的表,則填 *.*,*是一個通配符,表示全部。
’username‘@‘host’:表示授權給哪個用戶。
例:
GRANT select,insert ON zje.zje TO ‘aaa’@‘%’; //表示給用戶aaa授權,讓aaa能給zje庫中的zje表 實行 insert 和 select。
GRANT ALL ON *.* TO ‘aaa’@‘%’;//表示給用戶aaa授權,讓aaa能給所有庫所有表實行所有的權力。
用GRANT ALL ON *.* TO ‘aaa’@‘%’ ;再看用戶列表,可以發現權限都變成 Y了。
注意:
用以上命令授權的用戶不能給其他用戶授權,如果想這個用戶能夠給其他用戶授權,就要在后面加上 WITH GRANT OPTION
如: GRANT ALL ON *.* TO ’aaa‘@'%' WITH GRANT OPTION;
4.刪除用戶
命令:DROP USER ‘user_name’@‘host’
例:
DROP USER 'aaa'@‘%’;//表示刪除用戶aaa;
5.設置與更改用戶密碼
SET PASSWORD FOR ‘username’@‘host’ = PASSWORD(‘newpassword’);
如果是設置當前用戶的密碼:
SET PASSWORD = PASSWORD('newpassword');
如: SET PASSWORD = PASSWORD(‘123456’);
6.撤銷用戶權限:
命令:REVOKE privileges ON database.tablename FROM ‘username’@‘host’;
例如: REVOKE SELECT ON *.* FROM ‘zje’@‘%’;
但注意:
若授予權利是這樣寫: GRANT SELECT ON *.* TO ‘zje’@‘%’;
則用 REVOKE SELECT ON zje.aaa TO ‘zje’@‘%’;是不能撤銷用戶zje 對 zje.aaa 中的SELECT 權利的。
反過來 GRANT SELECT ON zje.aaa TO ‘zje’@‘%’;授予權力
用 REVOKE SELECT ON *.* FROM ‘zje’@‘%’;也是不能用來撤銷用戶zje 對zje庫的aaa表的SELECT 權利的