【问题标题】:Password issue on createdb - PostgreSQL on OSX Mountain Lioncreatedb 上的密码问题 - OSX Mountain Lion 上的 PostgreSQL
【发布时间】:2013-04-02 14:50:17
【问题描述】:

我越来越有名了

psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?

在 OSX Mountain Lion 的终端中尝试createdb 时出错,因此按照说明here,我将export PATH=/opt/local/lib/postgresql92/bin:$PATH 添加到我的.bash_profile,现在如果我输入which psql 我得到/opt/local/lib/postgresql92/bin/psql(以前我在哪里得到/usr/bin/psql)。

但是,如果我现在尝试createdb database,会提示我输入一个我不知道的密码(这不是我的默认用户密码),如果我两次输入错误,我会得到:

createdb: could not connect to database template1: 
FATAL:  password authentication failed for user "username"

username 是我在终端中的默认用户名。我要做的是创建一个 PostgreSQL 数据库,我可以从一个生活在 virtualenv 中的 Django 项目中访问。我正在使用 PostgreSQL 9.2。我做错了什么?

【问题讨论】:

    标签: django postgresql osx-mountain-lion virtualenv


    【解决方案1】:

    createdb 必须在后台连接到 PostgreSQL 才能执行创建新数据库的 SQL 命令。默认情况下,它使用您的操作系统用户名。根据错误消息,它碰巧失败了,要么是因为该用户不作为数据库用户存在(最有可能),要么是因为他的密码你不记得了。

    要解决这个问题,假设您使用的是macports 包,考虑到安装路径,这似乎是合理的,您可以运行:

    sudo su postgres -c '/opt/local/lib/postgresql92/bin/createdb dbname'
    

    新数据库将归 postgres 用户所有,这并不总是理想的。 更明智的选择是使用您的用户名创建一个普通的 db 用户,并使其成为数据库的所有者:

    sudo su postgres -c '/opt/local/lib/postgresql92/bin/createuser username'
    sudo su postgres -c '/opt/local/lib/postgresql92/bin/createdb -O username dbname'
    

    编辑createuser 命令提示这些问题(来自手册页):

          $ createuser joe
           Shall the new role be a superuser? (y/n) n
           Shall the new role be allowed to create databases? (y/n) n
           Shall the new role be allowed to create more new roles? (y/n) n
    

    通过对最后两个回答“是”,新用户将拥有足够的权限,以便随后可以在postgressudo 中使用它,例如这将起作用:

    createuser -U username newuser
    createdb -U username newdatabase
    

    【讨论】:

    • 谢谢你的回答,丹尼尔!有没有办法在不需要每次都使用sudo 的情况下完成这一切?就像我用我的用户名创建一个新用户一样,我可以切换到该用户并以这种方式创建数据库吗?还是目录权限等有问题?
    • 另外,这些命令在哪里创建数据库?我的电脑上好像找不到。
    • @GChorn:查看我对 createuser 的编辑。至于数据库,PG的datadir中每个数据库都有一个目录,但它完全由postgres管理,不允许用户对这些目录和文件做任何事情。
    • 谢谢丹尼尔。你帮了大忙!
    • 如果我使用 brew install 有什么建议吗?
    猜你喜欢
    • 2013-09-21
    • 2012-12-26
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    • 2012-09-12
    • 2012-08-11
    • 1970-01-01
    相关资源
    最近更新 更多