更改PSQL默认用户

时间:2013-07-13 16:56:28

标签: ubuntu-12.04 postgresql-9.1 psql

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

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

$ psql

我回来了

psql: FATAL:  role "crash" does not exist

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

事实证明,Google有许多资源可以为postgres创建新角色,或更改密码或其他任何有用的信息;但是,我一直在寻找几个小时,我找不到任何具体的改变postgres应该用于默认的角色。

如果有人能指出我正确的方向,我会很感激。

Sys- ubuntu 12.04 lts 64位

2 个答案:

答案 0 :(得分:6)

有关于在Ubuntu on the Ubuntu Community site上使用PostgreSQL的介绍性信息。

您可能还会发现PostgreSQL manual on client authentication有用。

您希望set the PGUSER environment variable覆盖默认用户。

根据libpq ~/.pg_service.confpsql定义服务也很有用。然后,您可以使用service=myservicedatabase.yml中引用该内容,避免重复细节。这是处理此问题的“正确”方法 - 定义服务,引用.pg_service.conf中的服务并在版本控制之外使用~/.psqlrc文件指定实际含义,并使用模板副本修改控制以方便。

alias psomedb 'psql "service=somedb"' 文件也可能有用请参阅the documentation on libpq service definitions。)

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

~/.bashrc

到我的postgres,方便访问常用的DB和主机。

the documentation for psql可用于存储各种主机/端口/数据库/用户组合的密码。

所有这一切,作为CREATEDB用户常规工作是一个可怕的想法。 应该是您的默认值。创建一个普通用户,可能是具有postgres权限的用户,但不是超级用户。当您需要超级用户权限时,将该用户用于大多数任务,并仅切换到超级用户(sudo或您为此目的创建的其他用户)。这与“不以root身份工作,{{1}}仅在需要时”这一原则相同“。

答案 1 :(得分:0)

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

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[@]}"
}