Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18043
  • 博文数量: 12
  • 博客积分: 265
  • 博客等级: 二等列兵
  • 技术积分: 105
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-15 08:28
文章分类

全部博文(12)

文章存档

2011年(12)

我的朋友
最近访客

分类: Mysql/postgreSQL

2011-05-30 16:44:19

 MYSQL核心技术手册笔记--MYSQL 安全及用户语句.rar  

 MYSQL核心技术手册笔记--MYSQL 安全及用户语句

用户权限层级

用户访问权限可以是全局层级,也可以是数据库级,表层级或者列层级。用户也可以把访问权限限制在特殊的函数和操作中。

授权表存储在mysql数据库中:

user 全局层级权限(Global privileges)

db 数据库层级权限(Database-specific privileges)

table_priv 表层级权限(Tablle-specific privileges)

Columns_priv 列层级权限(Column-specific privileges)

创建用户

CREATE USER 创建新用户

GRANT 创建用户账户,为用户设置权限

REVOKE 撤销权限

RENAME USER 修改用户名

SET PASSWORD 修改密码

DROP USER 删除用户

CREATE USER 语法

CREATE USER 'user'[@'host'] [IDENTIFIED BY [PASSWORD] 'password'][,...]

示例:

CREATE USER 'iris'@'localhost' IDENTIFIED BY 'iris_ace'

DROP USER 语法

DROP USER 'user'@'host'

这条语句将删除用户账户和来所有的授权表的特权(5.0.2及以后版本)。注意mysql.user表中一个用户可能有几个账户,如用户和主机的结合。

FLUSH 语法

FLUSH [LOCAL|NO_WRITE_TO_BINLOG] option [,...]

选项:

DES_KEY_FILE,HOSTS,LOGS,MASTER,PRIVILEGES,QUERY_CACHE,STATUS,TAB LE,TABLES,TABLES WITHOUT READ LOCK,USER_RESOURCES

FLUSH语句可以清除并重载MySQL的临时缓存。执行FLUSH必须有RELOAD权限。

DES_KEY_FILE 在服务器启动时,重新加载采用--des-key-file选项指定的或在选 项文件中的DES加密文件。

HOST 清空主机缓存,用于减少主机/IP地址的查找。在服务器遭封锁 时,则需要刷新主机缓存。

LOGS 用于关闭并重新找开所有的日志文件。如果服务器启动了二进制 记录,那么它将改变二进制日志文件为数值序列中的下一个值。 如果启动了错误日志,它将重命名错误日志为同一名字,但是以 -old 结尾并启动新的错误日志。

MASTER 这个选项并不运行记录,目前已废弃该选项,使用RESET  MASTER.

PRIVILEGES 从授权表中重新载入用户权限。如果已手动修改了mysql数据库 中的user表,那么使用这一选项是必需的,无需使用GRENT 语句。

QUERY CACHE 指示服务器对查询缓存进行碎片整理以提高性能。然而,这并不 会从缓存中移除查询。可以RESET QUERY CACHE 语句移除查 询。

SLAVE 该选项并不运行记录,目前已废弃该选项。使用RESET SLAVE 语句可以代替该选项。

STATUS 重置会话值和计算器并把主要的缓存置为0.把当前线程会话状 态变量设置为全局变量。Max_used_connections变量设置为在会 话打开时的数目。

TABLE[table,...] 后接一个或多个表名,该选项迫使给定的表关闭。这会终止给定 表的的主动查询。如果没有指定表名,该选项与TABLES选项 效果是一样的。

TABLES 令所有的表关闭,终止所有的查询,刷新查询缓存。如果没有表 名的话,其效果与TABLE选项是一样的。

TABLES WITH READ LOCK

关闭所有的表并锁定具有全局读锁定的表。这将允许用户查看数 据,但不能更新或插入记录。在适当的位置保持锁定,直到你执 UNLOCK TABLES语句为止。这个选项并不运行记录。

USER_RESOURCES 重置所有用户资源值 ,该值每小时计算一次。这些值是mysql 数据库中的user表中的max_questions,max_updates max_connections列。由于用户走出了每小时的限制而遭阻塞, 可以使用FLUSH选项。

GRANT语法

GRANT privilege[,...] [(column[,...])] [,...]

ON [TABLE|FUNCTION|PROCEDURE] {[{database|*}.{table|*}] | *}

TO 'user'@'host' [IDENTIFIED BY [PASSWORD] 'password'][,...]

[REQUIRE NONE |

[{SSL|X509}] [CIPHER 'cipher' [AND]]

[ISSUER 'issue' [AND]]

[SUBJECT 'subject']]

[WITH [GRENT OPTION |

MAX_QUERIES_PER_HOUR count |

MAX_UPDATES_PER_HOUR count|

MAX_CONNECTIONS_PER_HOUR count|

MAX_USER_CONNECTIONS count]...]

GRANT语句的主要作用在于授予用户权限。权限可以是全局的,数据库层级的,表层级的或列层级的。可以通过函数和过程来限制用户的权限。用户也可以通过函数和过程来对它们加以限定。另外,通过连接数或每小时可以访问的最多资源数也可以限制用的权限。

用户可以使用REQUIRE子句限制账户连接的类型。我们可以使用关键字AND将许多选项组合在一起。每个选项在该语句中只能使用一次。其中REQIRE NONE是默认值,这就意味着并不需要对连接类型做出限制。如果用户有正确的证明,那么根据客户端的选择,允许使用加密和解密连接。

GRANTREVOKE权限

ALL [PRIVILEGES] 授予所有基本权限。但并没有GRANT OPTION.

ALTER 将允许使用ALTER TABLE语句。

ALTER ROUTINE 允许用户账户修改或者删除存储程序。这包括 ALTER FUNCTIONALTER PROCEDURE语句 \以及DROP FUNCTIONDROP PROCEDURE.

CREATE 授予CREATE TABLE语句权限。

CREATE ROUTINE 允许用户账户创建存储程序。这名括CREATE  FUNCTIONCREATE PROCEDURE语句。对于 用户创建的任何存储程序,它都具有ALTER  ROUTINE权限。

CREATE TEMPORARY TABLES允许使用CREATE TEMPORARY TABLES语句。

CREATE USER 允许用户账户执行如下用户账户管理语句: CREATE USER, REVOKE ALL PRIVILEGESDROP USER语句。

CREATE VIEW 允许CREATE VIEW语句。

DELETE 允许使用DELETE语句。

DROP 允许用户执行DROP TABLETRUNCTE语句。

EVENT 允许用户账户为事件调度程序创建事件。该权限允 许使用CREATE EVENT, ALTER EVENTDROP  EVENT语句。

EXECUTE 允许存储程序的执行。

FILE 允许使用SELECT ...INTO OUTFILELOAD  DATA INFILE语句,SELECT...INTO OUTFILE导 出记录到一个文件,LOAD DATA INFILE从一个 文件导入数据库。

GRANT OPTION 允许使用GRANT语句向用户授权。在GRANT语 句中,使用WITH子句指定该选项。

INDEX 允许使用CREATE INDEX 和 DROP INDEX语 句。

INSERT 允许使用INSERT语句。

LOCK TALBES 允许具有SELECT权限的用户使用LOCK  TABLES语句。

PROCESS 允许使用SHOW FULL PROCESSLIST语句。

REFERENTCES 目前尚未使用。

RELOAD 允许使用FLUSHRESET语句。

REPLICTION CLIENT 允许用户查询主服务器和从属服务器的状态信息。

REPLICTION SLAVE 需要复制主服务器。允许从主服务器上读取二进日 志事件。

SELECT 允许SELECT语句。

SHOW DATABASES 对所有数据库,允许使用SHOW DATABASES语 句,而不仅仅是用户具有权限时才可以使用。

SHOW VIEW 允许使用SHOW CREATE VIEW语句。

SHUTDOWN 允许使用带有shutdown选项的mysqladmin实用工 具。

SUPER 允许使用CHANGE MASTER, KILL, PURGE  MASTER LOGSSET GLOBAL语句,以及带有 debug选项的命令行实用工具mysqladmin.

TRIGGER 允许用户账户创建各删除触发器:CREATE  TRIGGERDROP TRIGGER语句。

UPDATE 允许使用UPDATE语句。

USAGE 用来创建没有权限的用户或者在不影响现有权限 的情况下修改资源限制。

RENAME USER语法

RENAME USER 'user'[@'host'] TO 

使用该语句改变用户名或者原有用户账户的主机。它并不能修改用户权限或者把任何权限迁移到数据库,事件,存储程序,表,触发器或者视图上。

RESET语法

RESET [QUERY CACHE|MASTER|SLAVE]

使用RESET语句来重置某些服务器的环境和日志文件。需要指定RELOAD权限时才可以使用这条语句。QUERY CACHE选项清空包含SQL查询的结果缓存。

REVOKE语法

REVOKE ALL PRIVILEGES, GRANT OPTION FROM user[,...]

REVOKE privilege[,...][(column[,...])]

ON {[{database|*}.{table|*}] | *}

FROM 

SET PASSWORD语法

SET PASSWORD [FOR 'user'@'host'] = PASSWORD('password')

使用这条语句来改变用户账户的密码。我们必须给定用户名和主机。对于给定的用户名和主机的组合,改变密码。在授权表中,不能改变同一用户名不同主机下的账户。

SHOW GRANTS语法

SHOW GRANTS [FOR 'user'[@'host']]

这条语句为给定的用户列出了GRANT语句。

SHOW PRIVILEGES 语法

SHOW PRIVILEGES

这条语句显示可用的系统权限清单。是一份完整的权限列表。

用户账户及安全相关函数

AES_DECRYPT(string,password)

这个函数用于解密文本,该文本采用高级加密标准(AES,Advanced Encryption Standard)算法编码,保密关键字长度为128位。与之相反的函数是AES_ENCRYPT(),该函数解锁加密字符串,使用密码作为第二个参数。如果任何一个参数为NULL,则函数的返回结果也是NULL.

AES_ENCRYPT(string,password)

该函数加密给定的字符串,该字符串采用AES算法。描述同AES_DECRYPT().

CURRENT_USER()

该函数返回当前MYSQL服务器连接的用户名和主机的组合。

DECODE(string,password)

ENCODE(string,password)

该函数用二进制格式加密给定的字符串,并用password 作为密码来解密该字符串。

DES_DECRYPT(string,[key])

该函数使用Triple-DES算法给出的128位长度的关键字解密加密的文本。与之相反的是DES_ENCRYPT()函数。如果发生错误,就会返回NULL值。这个函数只有当MYSQL配置了SSLR的支持时才会起作用。

DES_ENCRYPT(string,[key])

该函数返回加密的文件,该文本采用Triple-DES算法。

ENCRYPT(string[,seed])

该函数使用C语言的crypt函数返回加密文本。在第二个参数中,指定双字符字符串来增加加密的随机性。返回的字符串并不能解密。在mysql数据库的user表中不能使用该函数作为password列的值。

MD5(string)

该函数MD5 128位校验和返回32位二进制字符串的RFC 1321标准的散列值。

OLD_PASSWORD(string)

该函数基于MYSQL4.1版本之前的密码加密方法,对给定的字符串加密产生的结果不能解密。

PASSWORD(string)

该函数用给定的参数加密密码,结果不能解密。该函数用来对MYSQL数据库中的user表中的password列进行加密。

SYSTEM_USER()

SESSION_USER()

该函数为当前MYSQL连接返回用户名和主机名。该函数没有参数。它与SYSTEM_USER()是同义词。

SHA(string)

SHA(string)

该函数为指定的字符串返回安全散列160位校验和。结果由40位十六进制数字组成的字符串。如果给定的字符串为NULL,则返回NULL值。该函数与SHA1()是同义词。

USER()

该函数为当前的MYSQL连接返回用户名和主机名组合。与SEESION_USER()SYSTEM_USER()是同义词。

阅读(494) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~