初始SQL
- 什么是SQL:一种描述性语言
- SQL语言的作用:对存储在RDBMS中的数据进行增删改查等操作
- 常用的SQL语言的种类:DCL(数据库管理类语言)、DDL(数据定义类语言)、DML(数据操作语句)、TCL(事务控制类语言)
访问权限
DCL(Data Control Language)
- 简历数据库账号 :create user
- 对用户授权:grant
- 收回用户权限:revoke
任务一:建立程序使用的数据库账号
create user mc_class@‘172.16.31.%‘ identified with ‘mysql_native_password‘ by ‘123456‘ with max_user_connections 1;
测试案例:测试用户最大连接数量为1
mysql -umc_class -p -h172.16.31.135
新开窗口,继续创建连接.直接发现报错信息。max_user-connections 当前设置值为1
任务二:给账号授权
- MySQL的常见权限
权限名称 | 说明 |
---|---|
Insert | 向表中插入数据的权限 |
Delete | 删除表中数据的权限 |
update | 修改表中数据的权限 |
select | 查询表中数据的权限 |
execute | 执行存储过程的权限 |
举个栗子
# 给用户mc_class授权mysql.user表上的user和host列的查询权限
grant select(user,host) on mysql.user to mc_class@‘192.168.1.%‘;
# 给用户mc_class授予mysql.user表上所有列的查询权限
grant select on mysql.user to mc_class@‘192.168.1.%‘;
# 给用户mc_class授权mysql库下所有表对象的查询权限
grant select on mysql.* to mc_class@‘192.168.1.%‘;
#给用户mc_class授权mysql库下所有表对象的查询/更新/删除权限
grant select,update,delete on mysql.* to mc_class@‘192.168.1.%‘;
GRANT命令的注意事项
- 使用grant授权的数据库账号必须存在
select user,host from mysql.user;
# 192.168.32.%这个网段在授权列表中并不存在,于是直接报错
grant select on mysql.user to mc_class@‘192.168.32.%‘;
- 用户使用grant命令授权必须具有grant option的权限
- 获取命令帮助 \h grant
任务三:回收用户权限
- 查看某用户授予的权限信息列表
show grants for mc_class@‘172.16.31.%‘;
- 授予某用户对于某表下的某种权限
# 授予mc_class用户mysql库下所有表的查找/删除/增加/更新命令
grant select,delete,insert,update on mysql.* to mc_class@‘172.16.31.%‘
- 登录授权账号查看权限信息
- 回收某用户对于某表下的某种权限
# 回收mc_class删除/增加/更新权限,仅保留查询权限
revoke delete,insert,update on mysql.* from mc_class@‘172.16.31.%‘