IT技术网www.itjs.cn

当前位置:首页 > 数据库 > MySQL > 带您深入了解MySQL用户权限

带您深入了解MySQL用户权限

发布时间:2010-10-14 11:25 来源:未知

MySQL用户权限根据用户的级别不同,权限级别也有所不同, 下面就为您介绍一些MySQL用户权限相关方面的知识,希望可以让您对MySQL用户权限有更深的认识。

你可以授权不同级别的MySQL用户权限,全局权限是最强大的,因为它们适用于任何数据库。要使ethel成为可做任何事情的超级用户,包括能授权给其它用户,发出下列语句:

GRANT ALL ON *.* TO ethel@localhost IDENTIFIED BY "coffee" WITH GRANT OPTION

ON子句中的*.*意味着“所有数据库、所有表”。从安全考虑,我们指定ethel只能从本地连接。限制一个超级用户可以连接的主机通常是明智的,因为它限制了试图破解口令的主机。

有些MySQL用户权限(FILE、PROCESS、RELOAD和SHUTDOWN)是管理权限并且只能用"ON *.*"全局权限指定符授权。如果你愿意,你可以授权这些权限,而不授权数据库权限。例如,下列语句设置一个flush用户,他只能发出flush语句。 这可能在你需要执行诸如清空日志等的管理脚本中会有用:

你可以列出一系列同时授予的各个MySQL用户权限。例如,如果你想让用户能读取并能修改现有数据库的内容,但不能创建新表或删除表,如下授予这些权限:

GRANT Select,Insert,Delete,Update ON samp_db TO bill@snake.net INDETIFIED BY "rock"

对于更精致的访问控制,你可以在各个表上授权,或甚至在表的每个列上。当你想向用户隐藏一个表的部分时,或你想让一个用户只能修改特定的列时,列特定权限非常有用。如:

GRANT Select ON samp_db.member TO bill@localhost INDETIFIED BY "rock"

GRANT Update (expiration) ON samp_db. member TO bill@localhost

第一条语句授予对整个member表的读权限并设置了一个口令,第二条语句增加了Update权限,当只对expiration列。没必要再指定口令,因为第一条语句已经指定了。

如果你想对多个列授予权限,指定一个用逗号分开的列表。例如,对assistant用户增加member表的地址字段的Update权限,使用如下语句,新权限将加到用户已有的权限中:

GRANT Update (street,city,state,zip) ON samp_db TO assistant@localhost