日期:2014-05-16  浏览次数:20679 次

MySQL心得9--用户和数据安全

1.    添加用户

可以使用CREATE USER语法添加一个或多个用户,并设置相应的密码。  语法格式:

CREATE USER user [identified BY [PASSWORD] 'password']

[, user [IDENTIFIED BY [PASSWORD] 'password']] ...

其中,user的格式为: 'user_name'@ 'host name'

说明:

user_name为用户名,host_name为主机名,password为该用户的密码。在大多数SQL产品中,用户名和密码只由字母和数字组成。

使用自选的IDENTIFIED BY子句,可以为账户给定一个密码。特别是要在纯文本中指定密码,需忽略PASSWORD关键词。如果不想以明文发送密码,而且知道PASSWORD()函数返回给密码的混编值,则可以指定该混编值,但要加关键字PASSWORD。

CREATE USER用于创建新的MySQL账户。CREATE USER会在系统本身的mysql数据库的user表中添加一个新记录。要使用CREATE USER,必须拥有mysql数据库的全局CREATE USER权限或INSERT权限。如果账户已经存在,则出现错误。

例: 添加两个新的用户,king的密码为queen,palo的密码为530415。

CREATE USER

    'king'@'localhost'IDENTIFIED BY 'queen',

    'palo'@'localhost'IDENTIFIED BY '530415';

说明:

在用户名的后面声明了关键字localhost。这个关键字指定了用户创建的使用MySQL的连接所来自的主机。如果一个用户名和主机名中包含特殊符号如“_”,或通配符如“%”,则需要用单引号将其括起。“%”表示一组主机,所有人都可以访问

如果两个用户具有相同的用户名但主机不同,MySQL将其视为不同的用户,允许为这两个用户分配不同的权限集合。

如果没有输入密码,那么MySQL允许相关的用户不使用密码登录。但是从安全的角度并不推荐这种做法。

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

2.  删除用户

语法格式:DROP USER user [, user_name] ...

DROP USER语句用于删除一个或多个MySQL账户,并取消其权限。要使用DROPUSER,必须拥有mysql数据库的全局CREATE USER权限或DELETE权限。

例: 删除用户TOM :DROP USER TOM@localhost;

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

3.  修改用户

可以使用rename USER语句来修改一个已经存在的SQL用户的名字。  语法格式:RENAME USER old_user TO new_user,

                [, old_user TO new_user] ...

说明:

old_user为已经存在的SQL用户。new_user为新的SQL用户。

RENAME USER语句用于对原有MySQL账户进行重命名。要使用RENAME USER,必须拥有全局CREATE USER权限或mysql数据库UPDATE权限。如果旧账户不存在或者新账户已存在,则会出现错误。