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位
答案 0 :(得分:6)
有关于在Ubuntu on the Ubuntu Community site上使用PostgreSQL的介绍性信息。
您可能还会发现PostgreSQL manual on client authentication有用。
您希望set the PGUSER
environment variable覆盖默认用户。
根据libpq
~/.pg_service.conf
为psql
定义服务也很有用。然后,您可以使用service=myservice
在database.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[@]}"
}