【问题标题】:preventing postgresql commands from keep asking for user password防止 postgresql 命令不断询问用户密码
【发布时间】:2011-03-12 04:21:29
【问题描述】:

这很奇怪,但我已经搜索过这个配置源但找不到它。

我目前正在使用带有 postgresql 9 的 opensuse 11.3。

我发出的每个 postgresql 命令行都会询问当前用户密码,如 psql、createdb、dropdb,我必须输入当前用户(即 postgres)的密码才能使其工作。

dropdb xxx && createdb xxx 会询问两次密码。

请给我亮光!

谢谢你:-)


编辑

实际上我已经作为 postgres 用户(我的 linux 中的用户)运行,所以我可以在不提供数据库密码的情况下执行 psql,但我仍然需要为系统用户 postgres 提供密码。

因此,如果数据库有一个 dbuser 用户,并且我以 postgres(linux 用户)身份运行 psql,则会询问 linux 用户(postgres)的密码,而不是 dbuser 密码。

【问题讨论】:

    标签: linux postgresql shell


    【解决方案1】:

    您可以创建一个~/.pgpass 文件(Windows 上为%APPDATA%\postgresql\pgpass.conf),其中包含以下格式的一行:

    hostname:port:database:username:password
    

    详情请见the documentation

    【讨论】:

    • 抱歉不清楚。我已经更新了原始帖子,在底部添加了更多清晰度。
    • 默认端口号为5432。
    【解决方案2】:

    如果你使用的是 opensuse,你应该可以通过运行来创建一个 .pgpass 文件:

    echo "hostname:port:database:username:password" > ~/.pgpass
    chmod 0600 ~/.pgpass
    

    当然有所有正确的信息。

    【讨论】:

    • 抱歉不清楚。我已经更新了原始帖子,在底部添加了更多清晰度。
    【解决方案3】:

    如果您有一个.pgpass 文件设置以允许某个用户访问某个数据库(我们称之为“myprojectdb”),请记住creatdbdropdb 并没有真正作用于“myprojectdb”,尽管事实上,您可能会要求他们创建和删除该数据库。

    您很可能希望将 postgres 的内部表添加到您的 pgpass 权限(postgres / 模板)。另外不要忘记在createdbdropdb 上添加--no-password 选项以忽略交互式提示(请注意,这仅在使用-U 选项指定的用户可以修改内部postgres 表时才有效)

    【讨论】:

      猜你喜欢
      • 2019-04-30
      • 2012-08-02
      • 1970-01-01
      • 2018-05-12
      • 2013-09-27
      • 2019-01-01
      • 1970-01-01
      • 2017-08-26
      • 1970-01-01
      相关资源
      最近更新 更多