全部博文(2065)
分类: Mysql/postgreSQL
2009-09-27 23:14:04
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的方式!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的!
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语句操作的时候,其密码不会变更