7

K- 所以希望解释我为什么要这样做会有所帮助。我的大部分开发工作都是在公司提供的笔记本电脑上完成的;但是当我回到家时,我想使用我的桌面。我有许多 Rails 项目,其中用户名和密码已经定义为“postgres”,所以我不想更改这些项目的 .yml 文件中的用户名和密码,只是为了让它在我的桌面上工作。太头疼了。因此,我要做的就是更改我的 postgres 环境以查找默认用户名“postgres”。我也不想每次登录时都必须通过 -U 或 -W。所以......

如何更改 psql/postgres 的默认角色?从命令行,如果我输入:

$ psql

我回来

psql: FATAL:  role "crash" does not exist

它正在寻找“崩溃”,因为那是我的 PC 登录用户帐户 - 但是,我希望我的默认用户名是“postgres”而不是“崩溃”。如何更改 PSQL 在 init 上寻找的角色?

事实证明,谷歌有很多资源可以为 postgres 创建一个新角色,或者更改密码,或者任何其他有用的信息;但是,我已经搜索了几个小时,但找不到任何特定于更改 postgres 应默认使用的角色的内容。

如果有人能指出我正确的方向,我将不胜感激。

Sys- ubuntu 12.04 lts 64 位

4

2 回答 2

9

Ubuntu 社区网站上有关于在 Ubuntu 上使用 PostgreSQL 的介绍性信息。

您可能还会发现有关客户端身份验证的 PostgreSQL 手册很有用。

您需要设置PGUSER环境变量以覆盖默认用户。

根据服务定义的文档,为in定义服务也很有用;然后您可以在with中引用它,避免重复细节。这是处理这个问题的“正确”方法——定义一个服务,在版本控制中引用该服务,并在版本控制之外有一个文件指定它的实际含义,为方便起见,在版本控制中使用模板副本。libpq~/.pg_service.conflibpqpsqlservice=myservicedatabase.yml.pg_service.conf

(该~/.psqlrc文件也可能有用,请参阅psql 的文档。)

Shell 别名也很方便。我经常做一些事情,比如添加

alias psomedb 'psql "service=somedb"'

到我~/.bashrc的方便访问常用的数据库和主机。

~/.pgpass文件可用于存储各种主机/端口/数据库/用户组合的密码。

话虽如此,以用户的身份例行工作是一个糟糕postgres的主意。它不应该您的默认设置。创建一个普通用户,可能是具有CREATEDB权限的用户,但不是超级用户。将该用户用于大多数任务,并且仅在您需要超级用户权限时切换到超级用户(postgres或您为此目的创建的其他用户) 。这与“不以 root 身份工作,仅在需要时代替”的原理相同。sudo

于 2013-07-15T03:29:28.000 回答
0

这是一个小 bash 片段,用于使用中指定的第一个用户名~/.pgpass

alias psql=psql_wrapper

psql_wrapper() {
    local args=("$@") username="" override=1
    while [[ $# -gt 0 ]]; do
        if [[ $1 == "-h" ]]; then
            username=$(grep $2 ~/.pgpass | head -n 1 | cut -d : -f 4)
        elif [[ $1 == "-U" ]]; then
            override=""
        fi
        shift
    done
    if [[ $username && $override ]]; then
        echo "-U" "$username"
        args+=("-U" "$username")
    fi
    \psql "${args[@]}"
}
于 2018-03-28T09:02:24.167 回答