用户和数据安全

一、添加和删除用户

【例】 添加两个新的用户

CREATE USER‘han'@'localhost' IDENTIFIED BY '123';

CREATE USER ‘tom'@'%' IDENTIFIED BY '123';

刚刚创建的用户还没有很多权限。它们可以登录到MySQL,但是它们不能使用USE语句来让用户已经创建的任何数据库成为当前数据库,因此,它们无法访问那些数据库的表,只允许进行不需要权限的操作,例如,用一条SHOW语句查询所有存储引擎和字符集的列表。

SHOW ENGINES;

SHOW CHARACTER SET LIKE '%';

【例】 删除用户han。

DROP USER han@localhost;

如果删除的用户已经创建了表、索引或其他的数据库对象,它们将继续保留,因为MySQL并没有记录是谁创建了这些对象。

 

可以使用RENAME USER语句来修改一个已经存在的SQL用户的名字。

【例】 将用户han改为hanaixia。

RENAME USER

  ‘han'@'localhost' TO ' hanaixia'@'localhost';

二、授予权限和回收权限

(1)授予表权限和列权限

【例】 授予用户han在XS表上的SELECT权限。

USE XSCJ;

GRANT SELECT

    ON  XS

    TO king@localhost;

说明:

若在TO子句中给存在的用户指定密码,则新密码将原密码覆盖。如果权限授予了一个不存在的用户,MySQL会自动执行一条CREATE USER语句来创建这个用户,但必须为该用户指定密码。

【例】 用户liu和zhang不存在,授予它们在XS表上的SELECT和UPDATE权限。

GRANT SELECT,UPDATE

  ON  XS

  TO  liu@localhost IDENTIFIED BY ‘123',

      zhang@localhost IDENTIFIED BY ‘123';

对于列权限,priv_type的值只能取SELECT、INSERT和UPDATE。权限的后面需要加上列名column_list。

【例】 授予king在XS表上的学号列和姓名列的UPDATE权限。

GRANT UPDATE(姓名, 学号)

  ON  XS

  TO  king@localhost;

(2)授予数据库权限

【例】 授予king在XSCJ数据库中的所有表的SELECT权限。

GRANT SELECT

    ON  XSCJ.*

    TO  king@localhost;

说明:

这个权限适用于所有已有的表,以及此后添加到XSCJ数据库中的任何表。

【例】 授予king在XSCJ数据库中所有的数据库权限。

USE XSCJ;

GRANT  ALL

    ON  *

    TO  king@localhost;

和表权限类似,授予一个数据库权限也不意味着拥有另一个权限。如果用户被授予可以创建新表和视图,但是还不能访问它们。要访问它们,它还需要单独被授予SELECT权限或更多权限。

 

(3)授予用户权限

【例】 授予Peter对所有数据库中的所有表的CREATE、ALTERT和DROP权限。

GRANT  CREATE ,ALTER ,DROP

    ON  *.*

    TO  Peter@localhost IDENTIFIED BY 'ppwd';

【例】 授予Peter创建新用户的权力。

GRANT  CREATE  USER

    ON  *.*

    TO  Peter@localhost;

【例】 回收用户David在XS表上的SELECT权限。

REVOKE  SELECT

   ON  XS

   FROM  David@localhost;

三、用界面方式管理用户和权限

 

posted @ 2012-03-25 22:31  仰望薰衣草  阅读(204)  评论(0编辑  收藏  举报