数据控制语言(DCL)
mysql数据控制语言DCL(Data Control Language)。
数据控制,其实就是“分配权限”——涉及到用户。
主要就是2个问题:
- 用户管理:
- 权限分配:
- 有哪些权限。
mysql中的权限
mysql中,权限是系统内定的一些“名词”,大约30个,每个权限表示“可以做什么工作”。
分配权限就是相当于让某个用户可以做哪些工作。
主要权限如下:
mysql中的用户
mysql系统中的用户信息,都记录存储在系统数据库mysql的user表中:
创建用户
语法形式
:
create user '用户名' @'登录服务器名,允许其登录的地址' [identified by '密码'];
用户名和服务器名对应mysql库中user表的user和host字段。
说明
:
- 创建的用户需同时指定该用户可以在哪个地址进行登录。其中“%”代表“任何地址”。
- 用户创建之后,自动在mysql的user表中添加了一条记录,但该用户还没有权限。
删除用户
语法形式
:
drop user '用户名'@'登录服务器名,允许其登录的地址';
修改用户密码
修改用户密码:
修改当前用户自己的密码
:
set password = password('新密码');
修改其他用户的密码
:
set password for '用户名'@'登录服务器名,允许其登录的地址' = password('新密码');
注意:需有修改权限才能修改他人密码。
权限分配
增加权限
授予用户的权限,增加权限
基本形式
:
grant 权限列表(权限名1,权限名2,...) on 数据库名.对象名 to '用户名'@'登录服务器名,允许其登录的地址' [identified by '密码'];
- 权限列表:用逗号隔开的各权限名称,’select’, ‘update’, ‘delete’,等等。
- ALL 表示“所有权限”
- “ALL privileges”表示所选定对象上的所有可用权限。
- 库名.对象名:表示权限在哪个库的哪个对象上有效。
- 对象有“表”,“视图”,“存储过程”,“存储函数”等。
- “
*.*
”表示所有数据库中的所有对象(全局权限), - “
db1.*
”表示数据库db1中的所有对象(库级权限)
- 用户名:指将权限赋给的用户。如果该用户在系统中不存在,则就会新建该用户,否则就是给该用户增加权限。
- 登录服务器名:指允许该用户登录到mysql的客户端服务器,通常本地就是localhost,也可以是某服务器名,或某ip地址。
- identified by ‘密码’:用于设定该用户的密码。
- 如果该用户不存在,则必须有此设定。
- 如果该用户已经存在,则此时就是修改该用户的密码。如果不写就表示不修改密码只授予权限。
删除权限
取消用户权限,减少权限
基本形式
:
revoke 权限列表(权限名1,权限名2,...) on 数据库名.对象名 from '用户名'@'登录服务器名,允许其登录的地址';
- 其中几项的含义和形式同增加权限。
表示从某个用户身上“取消”某些权限(也许还保留了其他权限)。