我认为我的机器上的 PostgreSQL 运行正常:我有一个 PID 并且我看到 postgres 正在“监听”端口 5432。
我正在尝试创建一个数据库来进行实验,使用 C. Fehily 的书“Visual Quickstart SQL”中概述的“Book”数据库。
我尝试了很多方法,但都没有成功。最新的方法是:
$ su postgres
Password:
postgres@piglet:/etc$ createdb books
createdb: could not connect to database postgres: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
postgres@piglet:/etc$
我不确定我是否在密码或授权方面遇到了困难,或者其他什么。我非常欢迎一些建议。提前谢谢!
答案1
如果 PostgreSQL 正在运行并且监听端口 5432,netstat
但是运行时psql
您会收到如下错误:
psql: could not connect to database postgres: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
那么问题很可能在于你正在使用psql
系统中安装的较早版本的 PostgreSQL。此版本可能配置为使用不同的unix_socket_directory
。
最好的选择是将环境变量设置为指向包含旧版本之前的正确、等版本的PATH
目录。psql
createdb
或者,您可以通过明确指定来使用 TCP/IP 连接-h localhost
,例如:
psql -h localhost ...
(因此createdb -h localhost ...
)。这将导致您使用旧版本的createdb
、psql
等命令,因此最好只设置您的。使用设置 unix 套接字路径也是PATH
如此,这在某种程度上是一种高级选项。-h
修复PATH
环境变量,一切都会好起来。你可以用类似下面的命令临时测试一下,其中你将用 PostgreSQL 9.2 安装下的目录/usr/pgsql-9.2/bin
替换:bin
export PATH=/usr/pgsql-9.2/bin:$PATH
psql
如果可行,您需要通过编辑/etc/environment
、您的.bash_profile
或其他适当的设置文件来使更改永久生效。搜索“ubuntu 永久设置 PATH”获取更多信息。