想建一个用户,就有备份单个数据库权限,没有查看存储过程内容的权限。
环境:win XP, postgresql 8.4另外有没办法不装postgresql 8.4的情况下
运行pg_dump.exe 备份其他服务器上的数据??
在虚拟机上试过总是:“系统无法执行指定的程序。”  

解决方案 »

  1.   

    首先你的权限不是表级别也不是列级别的是进程级别的 设置进程级别的权限
    set('Execute','Alter Routine','Grant')
    mysql中有这三个
    是执行权限 但是你的具体的有备份缺没有查看的权限 好像很难设置备份其他数据库的数据 首先你要保证是联通的 而且可以查看更新插入数据 :“系统无法执行指定的程序。”  这个错误好像是你本地的就不好用 更别说远程备份了
      

  2.   

    在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/
      

  3.   

    to trainee:
       在发这张贴之前我已经拜读并收藏了你的文章,由于文章是2008年发表的,我以为2009年pg会有些变化。
    如果你有8.4已经diy过的程序 源码,你可不可以发到[email protected]