我得到了着名的
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
,如果我输入{{}} {1}}我得到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"
是我在终端中的默认用户名。我想要做的是创建一个PostgreSQL数据库,我可以从生活在virtualenv中的Django项目访问。我正在使用PostgreSQL 9.2。我做错了什么?
答案 0 :(得分:2)
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
通过对最后两个回答“是”,新用户将拥有足够的权限,以便随后可以使用postgres
到sudo
的实例,例如这将有效:
createuser -U username newuser
createdb -U username newdatabase