用户和数据安全
一、添加和删除用户
【例】 添加两个新的用户
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;
三、用界面方式管理用户和权限