• 基于Centos7.6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
1>用户

#作用
登录,管理数据库逻辑对象

#定义
用户名@'白名单'
白名单支持的方式:
用户名@'10.0.0.%' #允许该网段(24位:1-254)访问
用户名@'%' #允许所有网段访问
用户名'10.0.0.200' #允许具体IP访问
用户名'localhost' #允许本地访问
用户名'127.0.0.1' #允许本地访问
用户名'db02' #允许某个hostname的地址访问
用户名'10.0.0.5%' #允许网段部分IP访问(50-59)
用户名@'10.0.0.0/255.255.254.0' #允许该网段23位访问
用户名@'10.0.%' #允许该网段16位访问

#管理操作
增:
mysql> create user 用户名@'10.0.0.%' identified by '密码'; #建用户又同时设置密码,设置开放IP段
mysql> grant all on *.* to 用户名@'10.0.0.%' identified by '密码'; #建用户又同时设置密码,设置开放IP段
8.0版本以前可以自动创建用户并授权,8.0之后建用户和授权分开了,grant不再支持自动创建用户了,不支持改密码。授权之前,必须要提前创建用户。
查:
mysql> desc mysql.user; ----> authentication_string
mysql> select user,host,authentication_string from mysql.user
改:
mysql> alter user 用户名@'10.0.0.%' identified by '密码'; #修改用户密码
删:
mysql> drop user 用户名@'10.0.0.%'; #删除用户

2>权限管理

#查看授权
mysql> show grants for 用户名@'作用目标';
例:mysql> show grants for app@'10.0.0.%';

#回收权限
revoke 需要回收的权限 on 作用库.* from '用户'@'作用目标';
例:revoke delete on app.* from app@'10.0.0.%';

#权限管理操作
mysql> grant all on wordpress.* to wordpress@'10.0.0.%' identified by '123';

#常用权限介绍
ALL:
SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE,REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCKTABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATETABLESPACE
ALL : 以上所有权限,一般是普通管理员拥有的
with grant option:超级管理员才具备的,给别的用户授权的功能
例如:grant all on *.* to 用户名@'10.0.0.%' identified by '密码' with grant option;

#权限作用范围:
*.* ---->所有目录均授权,适用管理员用户
作用库.* ---->某个库下的所有数据授权,适用开发和应用用户
作用库.作用表 ---->某个库下的某个表数据授权

格式:grant 权限 on 作用目标 to 用户 identified by 密码 with grant option;
ALL权限中的参数都可以添加到格式中的"权限"处

#需求1:windows机器的navicat登录到linux中的MySQL,管理员用户。
mysql> grant all on *.* to root@'10.0.0.%' identified by '123';

#需求2:创建一个应用用户app用户,能从windows上登录mysql,并能操作app库
mysql> grant select,update,insert,delete on app.* to app@'10.0.0.%'identified by '123';

#需求3:创建一个应用用户app用户,可以通过10网段,对T1库下的所有表进行SELECT,INSERT, UPDATE, DELETE操作,之后删除DELETE操作。
mysql> grant SELECT,INSERT,UPDATE,DELETE on T1.* to app@'10.0.0.%' identified by '123';
mysql> show grants for app@'10.0.0.%';
+--------------------------------------------------------------------+
| Grants for app@10.0.0.% |
+--------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'app'@'10.0.0.%' |
| GRANT SELECT, INSERT, UPDATE, DELETE ON `T1`.* TO 'app'@'10.0.0.%' |
+--------------------------------------------------------------------+
2 rows in set (0.00 sec)
mysql> revoke delete on `T1`.* from 'app'@'10.0.0.%';
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for app@'10.0.0.%';
+------------------------------------------------------------+
| Grants for app@10.0.0.% |
+------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'app'@'10.0.0.%' |
| GRANT SELECT, INSERT, UPDATE ON `T1`.* TO 'app'@'10.0.0.%' |
+------------------------------------------------------------+
2 rows in set (0.00 sec)
mysql>