1、user表中host列的值的意義
% 匹配所有主機
localhost localhost不會被解析成IP地址,直接通過UNIXsocket連接
127.0.0.1 會通過TCP/IP協議連接,並且只能在本機訪問;
::1 ::1就是兼容支持ipv6的,表示同ipv4的127.0.0.1
2、用戶管理
查看
select `host`, `user` , `password` from `mysql`. `user` ;
創建
1.直接創建並賦權限 (推薦)
grant all on *.* to 'admin'@'%' identified by 'password' ;
2.創建 identified by 會將純文本密碼加密作爲散列值存儲
create user zx_root IDENTIFIED by 'password';
3.直接向數據表添加
INSERT INTO `mysql`.`user` VALUES ('%', 'mysqltest', password("hello123"), 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y','Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', '0', '0', '0', '0', 'mysql_native_password', '', 'N');
修改
rename `mysql`.`user` 'feng' to 'newuser';
//mysql 5之後可以使用,之前需要使用update 更新user表
更改密碼
set password for zx_root = password ( 'xxxxxx' );
update `mysql`. `user` set password = password ( 'xxxx' ) where `user` = 'otheruser';
刪除
DELETE FROM `mysql`. `user` WHERE `User` = '' ;
DROP USER 'user' [,'user' ...] ;
#或則如果不希望用戶在系統中存在,可以按如下方式撤銷
revoke all privileges,grant from user
3、權限管理
查看用戶權限
show grants for zx_root;
賦予用戶權限
grant 權限1,權限2,…權限n on 數據庫名稱.表名稱 to '用戶名' @ '用戶地址' identified by ‘連接口令’;
- 權限1,權限2,…權限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14個權限。
- 權限1,權限2,…權限n被all privileges或則all代替,表示賦予用戶全部權限。
- 當數據
庫名稱.表名
被*.*
代替,表示賦予用戶操作服務器上的所有數據庫的所有的表。 - 用戶地址可以是localhost,也可以是IP地址、機器名字、域名。也可以用
%
表示允許從任何地址連接。 - ‘連接口令’未登錄狀態不能爲空,否則創建失敗。已登錄可以爲空。
權限 | 說明 |
---|---|
all privileges或則all | 表示賦予用戶全部權限 |
select | 查詢 |
insert | 增加 |
update | 修改 |
delete | 刪除 |
create | 創建數據庫或則表 |
drop | 刪除數據庫或則表 |
index | 可以試用create index 和drop index |
alter | 修改表結構 |
grant | 權限控制 |
references | 外鍵(Foreign Key) |
reload | 必須擁有reload權限,才能執行flush [tables、logs、privileges] |
shutdown | 試用mysqladmin shutdown來關閉mysql |
process | 通過這個權限,用戶可以執行SHOW PROCESSLIST和KILL命令 |
file | 使用select into outfile 和load data infile 但是不要把file,process,super權限授予管理員以外的帳號, 這樣存在嚴重的安全隱患 |
4、 回收權限
revoke select on dmc_db.* from zx_root;
//如果權限不存在會報錯
上面的命令也可使用多個權限同時賦予和回收,權限之間使用逗號分隔
最後:刷新權限
重新刷權限表到內存了
FLUSH PRIVILEGES ;