Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29423536
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类: Mysql/postgreSQL

2009-09-27 23:14:04

MYSQL用户权限管理(Grant,Revoke)

Grant 常用格式:

grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’;

权限1,权限2,…权限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限。
当权限1,权限2,…权限n被all privileges或者all代替,表示赋予用户全部权限。
当数据库名称.表名称被*.*代替,表示赋予用户操作服务器上所有数据库所有表的权限。
用户地址可以是localhost,也可以是ip地址、机器名字、域名。也可以用’%'表示从任何地址连接。

如果连接口令为空的话就是我们现在需要的升级权限。

具体的权限控制在mysql.db表中可以查看到.也可直接对这个表进行更新操作进行权限的修改.

如果想要查询出来用户的权限的话可以mysql.db的方式!

REVOKE
REVOKE和作用和GRANT相反,语法格式为:
REVOKE privileges ON 数据库名[.表名] FROM user_name

例如:
创建用户Bob,密码为“bob”,但不给他任何权限:
GRANT usage on * to Bob identified by ’bob’;
授予Bob在books数据库中的查询和插入权限:
GRANT select, insert on books.* to  Bob;
取消Bob在books数据库中的所有权限:
REVOKE all on books.* from Bob;
注:需要指出的是,REVOKE all...仅仅是回收用户的权限,并不删除用户。在MySQL中,用户信息存放在mysql.User中。MySQL可以通过DROP USER来彻底删除一个用户,其用法为:
DROP USER user_name; 
例如,要删除用户Bob,可以用:
DROP USER Bob;




user 能连接服务器的用户以及他们拥有的任何全局权限

db 数据库级权限

tables_priv 表级权限

columns_priv 列级权限

还有第5个授权表(host),但它不受GRANT和REVOKE的影响。

当你对一个用户发出一条GRANT语句时,在user表中为该用户创建一条记录。如 果语句指定任何全局权限(管理权限或适用于所有数据库的权限),这些也记录在user表中。如果你指定数据库、表和列级权限,他们被分别记录在db、 tables_priv和columns_priv表中。

1. 上面这一点整理:

如果我的GRANT语句如下:

grant select on test.* to 'z'@'%';

这个是针对单个数据库级别的权限。我查询过mysql.user表了有这个用户但是看它的Select_priv 这个字段为N

因为这个用户不是全局的DB所以~~

不过我查询了 select * from mysql.db 是有记录的。

因为这个是单指向某个DB的!




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

hkebao2010-02-22 14:46:54

查看当前数据库的全部合法用户: select User from mysql.user; 查看指定用户名其权限是什么: show grants for root; 就可以打印出来此用户的具体权限是什么

hkebao2010-01-26 14:57:08

GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY 'something' WITH GRANT OPTION; 示例: grant all on dbname.* to server@19.22.2.8 identified by "abcdefg " with grant option; flush privileges; 两步