第七节:数据控制语言DML

  1. 新创建的用户只有登录mysql的权限,没有其他任何权限,不能进行任何操作
  2. show grants for username@hostname:用来查看用户的权限
  3. USAGE ON *.*  :表示对任何数据库中的任何表都没有权限

 用户授权 (GRANT)

  1. 语法格式:GRANT 权限类型 [(列名1 ,...,列名n)]  [权限类型1  (列名)] ON 对象  TO 用户 [ IDENTIFIED BY 密码]  [ WITH GRANT OPTION]
  2. 语法说明如下:
    1. GRANT:实现对用户进行授权
    2. 权限类型:   ALL 或 ALL PRIVILEGES:表示所有权限。
      1. 授予对象为数据库管理系统(*.*)时:权限类型的值可以指定为mysql中能用的所有关键字(如予用户可以创建新用户的权限:grant create user on *.* to weiking)
      2. 授予对象为数据库时,权限类型的值可以指定为数据库中能用的所有关键字( 如授予用户在特定数据中创建视图的权限:grant create view on WeikingDatabase.* to weiking;)
      3. 授予表权限时,权限类型的值可以指定为表中能用的所有关键字(如授予用户删除数据表的权限:grant drop on WeikingDatabase.customer to weiking;)
      4. 授予列权限时,权限类型的值可以指定为列能用的所有关键字(如授予对象查询字段的权限:grant select (c_madein,c_name)  on WeikingDatabase.commodity to weiking;)
    3. 列名:可选项,指定给哪些列进行授权,不加表示所有的列,也可以一次给多个列指定权限类型
      1. 如:grant select  on WeikingDatabase.commodity to weiking;  
    4. ON:用于指定权限授予的对象
    5. 对象:指点授权的对象
      1. *:表示当前数据库中的所有表
      2. *.*:表示所有数据库中的所有表
      3. db_name.*:表示某个数据库中的所有表
      4. db_name.tb_name:表示某个数据库中的某个表或视图
      5.  db_name.routine_name:表示某个数据库中的某个存储过程或函数,routine_name 指定存储过程名或函数名
    6. TO:指定授予权限的用户账号
    7. identified  by 密码:在设置权限的同时更新用户的密码,如果用户不存在,mysql会自动执行一条 create user 语句来创建这个用户
    8. WITH GRANT OPTION:拥有给其他用户授权的权限(其他用户 权限不能超过本身的权限)
  3. 实例:
    1. 使用 GRANT 语句创建一个新的用户 username,密码为 123456,并给username用户对其他用户授权的权限
    2. grant all on *.* to username identified by '123456' with grant option;

删除用户权限(revoke)

  1. 语法格式:REVOKE 权限类型  [(列名1 ,...,列名n)]  [权限类型1  (列名1 ,...,列名n)] ON 对象类型  FROM 用户1 [ …,用户2 ]
  2. 语法说明:
    1. REVOKE 语法和 GRANT 语句的语法格式相似
    2. REVOKE 语句用来删除用户的权限
  3. 实例:使用 REVOKE 语句创建一个取消username 的所有权限
    1. revoke all on *.* from username;
posted @ 2019-12-11 15:51  WeiKing  阅读(128)  评论(0)    收藏  举报