Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29307413
  • 博文数量: 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的!




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

chinaunix网友2011-01-06 15:11:22

珍惜时间。速度完成

chinaunix网友2010-07-07 23:11:30

211.102.155.19

chinaunix网友2010-03-06 17:43:27

补充:删除权限是用的revoke all privilege 语句 请大虾赐教.

chinaunix网友2010-03-06 17:39:31

grant 一个用户,只给了select 权限 登陆后为什么可以 create\ insert.... 更新表mysql.user后,将所有privilege 都 N并flush privileges 为什么还是可以做以上操作,是否还有其他权限控制的地方 菜鸟求解!

hkebao2010-02-22 15:10:49

测试的语句 1、grant select on test to 'testuser'@'%' identified by "123456" with grant option;添加一个用户进来 2、查看用户select User,password from mysql.user ; 发现用户存在并且有密码 3、权限叠加grant select,insert,update,delete on test to 'testuser'@'%' with grant option; 4、再次查看select User,password from mysql.user ; 发现密码没变化 结论:对于一个用户而言其权限是可以叠加。密码不会变更 即如果用户表中存在一个用户再次执行grant语句操作的时候,其密码不会变更