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 '密码'; mysql> grant all on *.* to 用户名@'10.0.0.%' identified by '密码'; 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>
|