一个真实而感人的故事
2009-05-06 20:14
274 查看
MySQL grant 语法的详细解析
上面的解析已经很详细了,但是还有中情况,一个用户对应多个数据库的情况:grant all on `数据库名%`.* to '用户名'@'IP' identified by '密码'
mysql支持通配符
当把带引号的值是,需使用反勾号(‘`’)为数据库、表、列和子程序名称加引号。使用单引号(‘'’)为hostnames、usernames和
密码加引号 .在数据库名一项可以使用%来选择一类数据库,还可以使用“_”
MySQL用户帐号管理主要用grant(授权)和revoke(撤权)两个SQL指令来管理。这两个指令实质是通过操作user(连接权限和全局
权限)、db(数据库级权限)、tables_priv(数据表级权限)、columns_priv(数据列级权限)四个权限表来分配权限的。host权
限表不受这两个指令影响。下面将会详细介绍用户权限管理的内容。
本文由网页教学网(http://www.webjx.com
)整理发布!转载请注明出处,谢谢!
GRANT语法说明:
GRANT privileges (columns) #privileges表示授予的权限,columns表示作用的列(可选) ON what #设置权限级别,全局级、数据库级、数据表级和数据列级 TO account #权限授予的用户,用"user_name"@"host_name"这种用户名、主机名格式 IDENTIFIED BY 'password' #设置用户帐号密码 REQUIRE encryption requirements #设置经由SSL连接帐号 WITH grant or resource management options; #设置帐号的管理和资源(连接服务器次数或查询次数等)选项
示例:
mysql>grant all on db.* to 'test'@'localhost' identified by 'test'; 上例运行后的效果是,test用户只能通过‘test’密码从本机访问db数据库 mysql>grant all on db.* to 'test'@'%' identified by 'test'; 上例运行后的效果是,test用户可通过‘test’密码从任意计算机上访问db数据库。‘%’代表任意字符,‘_’代表一个任意字符。主机名部份还可以是IP地址。
如果没有给定主机部份,则默认为任意主机,也就是'test'和'test'@'%'是等价的。 |
CREATE TEMPORARY TABLES | 创建临时数据表 |
EXECUTE | 执行存储过程(暂不支持) |
FILE | 操作系统文件 |
GRANT OPTION | 可把本帐号的权限授予其它用户 |
LOCK TABLES | 锁定指定数据表 |
PROCESS | 查看运行着的线程信息 |
RELOAD | 重新加载权限表或刷新日志及缓冲区 |
REPLICATION CLIENT | 可查询主/从服务器主机名 |
REPLICATION SLAVE | 运行一个镜像从服务器 |
SHOW DATABASES | 可运行SHOW DATABASES指令 |
SHUTDOWN | 关闭数据库服务器 |
SUPER | 可用kill终止线程以及进行超级用户操作 |
ALTER | 可修改表和索引的结构 |
CREATE | 创建数据库和数据表 |
DELETE | 删除数据表中的数据行 |
DROP | 删除数据表和数据行 |
INDEX | 建立或删除索引 |
INSERT | 插入数据行 |
REFERENCES | (暂时不支持) |
SELECT | 查询数据行 |
UPDATE | 更新数据行 |
ALL | 所有权限,但不包括GRANT。 |
USAGE | 无权限权限 |
ON *.* | 全局级权限,作用于所有数据库 |
ON * | 全局级权限,若未指定默认数据库,其作用范围是所有数据库,否则,其作用范围是当前数据库 |
ON db_name.* | 数据库级权限,作用于指定数据库里的所有数据表 |
ON db_name.tbl_name | 数据表级权限,作用于数据表里的所有数据列 |
ON tbl_name | 数据表级权限,作用于默认数据库中指定的数据表里的所有数据列 |
mysql>GRANT USAGE ON *.* TO account IDENTIFIED BY 'new_password'; #修改密码 mysql>GRANT USAGE ON *.* TO account REQUIRE SSL; #启用SSL连接 mysql>GRANT USAGE ON *.* TO account WITH MAX_CONNECTIONS_PER_HOUR 10; #设置资源
拥有WITH GRANT OPTION权限的用户可把自已所拥用的权限转授给其他用户,如:
mysql>GRANT ALL ON db.* TO 'test'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; 这样test用户就有权把该权限授予其他用户。
限制资源使用,如:
mysql>GRANT ALL ON db.* TO account IDENTIFIED BY 'password' WITH MAX_CONNECTIONS_PER_HOUR 10 MAX_QUERIES_PER_HOUR 200 MAX_UPDATES_PER_HOUR 50; 允许account用户每小时最多连接20次服务器,每小时最多发出200条查询命令(其中更新命令最多为50条)
默认都是零值,即没有限制。FLUSH USER_RESOURCES和FLUSH PRIVILEGES可对资源限制计数器清零。
REVOKE语法说明:
mysql>REVOKE privileges (columns) ON what FROM account;
示例:
mysql>REVOKE SELECT ON db.* FROM 'test'@'localhost'; 删除test帐号从本机查询db数据库的权限
REVOKE可删除权限,但不能删除帐号,即使帐号已没有任何权限。所以user数据表里还会有该帐号的记录,要彻底删除帐号,需用DELETE命令删除user数据表的记录,如:
% mysql -u root -p mysql>use mysql mysql>DELETE FROM user where User='test' and Host='localhost'; mysql fulsh privileges;
REVOKE不能删除REQUIRE和资源占用的配置。他们是要用GRANT来删除的,如:
GRANT USAGE ON *.* TO account REQUIRE NONE; #删除account帐号的SSL连接选项 GRANT USAGE ON *.* TO account WITH MAX_CONNECTIONS_PER_HOUR 0 MAX_QUERIES_PER_HOUR 0 M
相关文章推荐
- 一个真实故事:跪下来,叫声娘!(感人心扉)
- (转)一个偷食禁果的女孩--一件我亲眼目睹的真实感人故事
- 一个真实的感人故事:看完它,你会泪流满面....
- 游戏公司之奇葩——一个真实的故事 像张江一家公司
- 一个真实的故事:IT人离开IT还能干什么
- 一个真实的故事--东莞不相信眼泪(转载之二)
- 吃饱了,就来写点东西吧。讲一个真实的故事给你长自信
- 讲述一个真实的故事[from Q-ZONE]
- 一个感人的故事
- 一个感人的故事
- 通过一个真实故事理解SOA监管
- 一个超感人的故事:关于swfupload在某些环境下面session丢失的完美解决方案(看完我哭了)
- 一个真实的故事
- 一个真实而又令人震撼的故事
- 有这样一个感人的故事
- 《掘金黑客》:一个真实的黑客故事,
- 作一个孝顺的孩子(一个感人的小故事)
- [转贴]一个真实的故事,使我这个曾经邪恶的心为之颤栗-
- 一个硬盘的感人爱情故事
- 一个真实的故事:IT人离开IT还能干什么