Vic*_*tor 18 postgresql linux ubuntu
我正在运行 Ubuntu 16。我已经安装了 Postgresql。Postgresql 曾经可以工作,但后来我重新启动了。
nmap 命令显示端口 5432 已打开。Postgres 似乎工作正常:
service postgresql status
Run Code Online (Sandbox Code Playgroud)
postgresql.service - PostgreSQL RDBMS 已加载:已加载(/lib/systemd/system/postgresql.service;已启用;供应商预设:已启用)活动:自美国东部时间周六 2017-07-29 18:42:59 起处于活动状态(退出);1min 4s ago Process: 201 ExecStart=/bin/true (code=exited, status=0/SUCCESS) Main PID: 201 (code=exited, status=0/SUCCESS)
Memory: 0B CGroup: /system.slice/postgresql.服务
我跑了这个: psql
但我得到了这个:
psql:无法连接到服务器:没有这样的文件或目录 服务器是否在本地运行并接受 Unix 域套接字“/var/run/postgresql/.s.PGSQL.5432”上的连接?
上面列出的文件似乎不存在。
我如何进入 Postgresql?通常我会跑psql或sudo -i -u postgres然后psql。但是这些命令不起作用。我不断收到有关“无法连接到服务器”的错误消息。几次重新启动都没有帮助。
更新:
我运行了这个命令: dpkg -l | grep postgres
rc postgresql-9.5 9.5.6-0ubuntu0.16.04 amd64 对象关系 SQL 数据库,版本 9.5 服务器 ii postgresql-client 9.5+173 PostgreSQL 的所有前端程序(支持版本) ii postgresql-client-9.5 9.5.7-0ubuntu0.16.04 amd64 PostgreSQL 9.5 前端程序 ii postgresql-client-common 173 多个 PostgreSQL 客户端版本的所有管理器 ii postgresql-common 173 all PostgreSQL 数据库集群管理器
小智 17
如果您的 Postgres 服务已启动并运行且没有任何错误,或者在启动 Postgres 服务时没有错误但您仍然遇到上述错误,请按照以下步骤操作
pg_lsclusters将列出您设备上运行的所有 postgres 集群例如:
Ver Cluster Port Status Owner Data directory Log file
9.6 main 5432 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log
Run Code Online (Sandbox Code Playgroud)
在你的情况下,状态很可能会下降。尝试重新启动 Postgres 集群和服务
#format is pg_ctlcluster <version> <cluster> <action>
sudo pg_ctlcluster 9.6 main start
#restart postgresql service
sudo service postgresql restart
Run Code Online (Sandbox Code Playgroud)
如果此过程不成功,它将抛出错误。我的错误是(你可以看到错误日志/var/log/postgresql/postgresql-9.6-main.log)
FATAL: could not access private key file "/etc/ssl/private/ssl-cert-snakeoil.key": Permission denied
Try adding `postgres` user to the group `ssl-cert`
Run Code Online (Sandbox Code Playgroud)
确保这postgres是/var/lib/postgresql/version_no/main
例如的所有者:sudo chown postgres -R /var/lib/postgresql/9.6/main/
这发生在我身上,结果我错误地从“ssl-cert”组中删除了 Postgres 用户。运行以下代码以修复用户组问题并修复权限
#set user to group back with
sudo gpasswd -a postgres ssl-cert
# Fixed ownership and mode
sudo chown root:ssl-cert /etc/ssl/private/ssl-cert-snakeoil.key
sudo chmod 740 /etc/ssl/private/ssl-cert-snakeoil.key
sudo service postgresql restart
Run Code Online (Sandbox Code Playgroud)
Cra*_*ger 12
您可能安装了多个 PostgreSQL 版本。如果是这样,其他版本可能默认为,unix_socket_directories = '/tmp/'但libpq您psql链接到的可能默认为/var/run/postgresql/.
尝试
psql -h /tmp
Run Code Online (Sandbox Code Playgroud)
如果这有效,则上面是问题。您可以添加export PGHOST=/tmp到您的用户.bashrc以在本地更改默认值。
如果这不起作用,请确保 PostgreSQL 确实在运行
ps aux |grep postgres
Run Code Online (Sandbox Code Playgroud)
如果没有,请启动它。如何取决于您如何安装它,但如果您使用软件包安装,它将通过serviceorsystemctl命令。
Dan*_*ité 10
psql:无法连接到服务器:没有这样的文件或目录 服务器是否在本地运行并接受 Unix 域套接字“/var/run/postgresql/.s.PGSQL.5432”上的连接?
此错误通常表示服务器未运行。根据dpkg -l输出和评论线程,这是由于以postgresql-9.5某种方式卸载了主包。由于没有使用--purge选项调用卸载dpkg,因此数据和配置文件仍然存在,因此apt-get install postgresql-9.5可以解决问题。
| 归档时间: |
|
| 查看次数: |
114907 次 |
| 最近记录: |