在postgresql下,存储过程的代码是任何人可读的,他是存在一个叫catalog.pg_proc系统表里 如果要让存储过程对某些人不可见 必须用 REVOKE ALL ON pg_catalog.pg_proc FROM PUBLIC -- 取消所有人(super除外)可读 再用 GRANT SELECT ON pg_catalog.pg_proc TO XXX -- XXX为可读的角色但现在的矛盾是: 假如一个用户无法读存储过程,是无法备份数据库。 好在postgresql是开缘项目,可以自己DIY参考我的DIY http://blog.chinaunix.net/u/24767/
to trainee: 在发这张贴之前我已经拜读并收藏了你的文章,由于文章是2008年发表的,我以为2009年pg会有些变化。 如果你有8.4已经diy过的程序 源码,你可不可以发到[email protected]?
set('Execute','Alter Routine','Grant')
mysql中有这三个
是执行权限 但是你的具体的有备份缺没有查看的权限 好像很难设置备份其他数据库的数据 首先你要保证是联通的 而且可以查看更新插入数据 :“系统无法执行指定的程序。” 这个错误好像是你本地的就不好用 更别说远程备份了
如果要让存储过程对某些人不可见
必须用
REVOKE ALL ON pg_catalog.pg_proc FROM PUBLIC -- 取消所有人(super除外)可读
再用
GRANT SELECT ON pg_catalog.pg_proc TO XXX -- XXX为可读的角色但现在的矛盾是:
假如一个用户无法读存储过程,是无法备份数据库。
好在postgresql是开缘项目,可以自己DIY参考我的DIY
http://blog.chinaunix.net/u/24767/
在发这张贴之前我已经拜读并收藏了你的文章,由于文章是2008年发表的,我以为2009年pg会有些变化。
如果你有8.4已经diy过的程序 源码,你可不可以发到[email protected]?