MySQL中的所有用戶,都存儲在系統數據庫(mysql)中的user 表中——不管哪個數據庫的用戶,都存儲在這里。
示例:
mysql> use mysql;mysql> select *from user;1.創建用戶
語法形式:CREATE USER 'username'@'host' IDENTIFIED BY 'passWord';
說明:
username – 你將創建的用戶名,
host – 指定該用戶在哪個主機上可以登陸,如果是本地用戶可用localhost,
如果想讓該用戶可以從任意遠程主機登陸,可以使用通配符%.
password – 該用戶的登陸密碼,密碼可以為空,如果為空則該用戶可以不需要密碼登 陸服務器.
示例
CREATE USER 'test'@'%' IDENTIFIED BY 'Test_test_123456';#在mysqkl5.7上設置了安全密碼機制,設置的密碼必須要符合該機制,否則會出錯2.刪除用戶
DROP USER ‘username’@'host’; #這里的host要跟user表里的host進行對應
示例:
mysql> drop USER 'test'@'%';3.查看和修改用戶允許登錄的host
mysql> use mysql;mysql> select host,user from user;#查看mysql中的用戶允許登錄的ipmysql> update user set host = '%' where user = 'root';#修改root的host為%,表示允許任意IP地址登錄. 設置為后需要重啟mysql或機器二、權限管理
mysql數據庫,將其中所能做的所有事情,都分門別類分配到大約30多個權限中去了,其中每個權限,都是一個“單詞”而已!,比如:
select:代表可以查詢數據;
update:代表可以修改數據;
delete:代表可以刪除數據;
.......
其中,有一個權限名叫做“all”:表示所有權限;
有如下權限:
1.用戶授權
語法形式:GRANT PRivileges ON databasename.tablename TO 'username'@'host'
說明:
privileges – 用戶的操作權限,如SELECT , INSERT , UPDATE 等(詳細列表見該文最后面).
如果要授予所有的權限則使用ALL.;
databasename – 數據庫名
tablename-表名,如果要授予該用戶對所有數據庫和表的相應操作權限則可用* 表示, 如*.*.
示例:
mysql> GRANT SELECT, INSERT ON mysql.user TO 'test'@'%';mysql> GRANT ALL ON *.* TO 'test'@'%';注意:用以上命令授權的用戶不能給其它用戶授權,如果想讓該用戶可以授權,用以下命令:
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
2.撤銷用戶權限
語法形式:REVOKE privilege ON databasename.tablename FROM 'username'@'host';
說明:
privilege, databasename, tablename – 同授權部分.
示例
mysql> REVOKE SELECT, INSERT ON `mysql`.`user` FROM 'test'@'%';#撤銷權限注意和用戶的授權列表對應撤銷技巧說明
step1.查看該用戶的權限列表mysql> show grants for test@'%';step2.復制該用戶的權限GRANT ALL PRIVILEGES ON *.* TO 'test'@'%'step3.把GRANT替換為REVOKE ON替換為FROM,執行即可mysql> REVOKE ALL PRIVILEGES ON *.* FROM 'test'@'%';3.查看某個用戶的權限列表(host要跟user表里的host對應)
mysql> show grants for root@'localhost';#對于localhost的用戶mysql> show grants for test@'%';#對于任意ip的用戶
新聞熱點
疑難解答