全部博文(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的!