重新启动vm

时间:2018-05-30 19:56:30

标签: postgresql mod-rewrite

我在VM中有这个数据库,可以重新启动VM,它可以正确访问

但是现在如果我在pgAdmin III尝试访问数据库时重新启动虚拟机,我会收到以下消息

  

服务器不听

     

服务器不接受连接:连接库报告

     

无法连接到服务器:连接被拒绝服务器是否在主机“127.0.0.1”上运行并接受端口5432上的TCP / IP连接?

     

如果您遇到此消息,请检查您是否是服务器   试图联系实际上是在给定端口上运行PostgreSQL。   测试您是否具有从客户端到服务器的网络连接   主机使用ping或等效工具。是你的网络/ VPN / SSH   隧道/防火墙配置正确吗?

     

出于安全原因,PostgreSQL 监听所有可用内容   最初在服务器计算机上的IP地址。为了访问   通过网络服务器,您需要启用侦听地址   第一。对于从8.0版开始的PostgreSQL服务器,这是   使用“listen_addresses”参数控制   postgresql.conf文件。在这里,您可以输入IP地址列表   服务器应该监听,或者只是使用'*'来监听所有可用的   IP地址。对于早期的服务器(版本7.3或7.4),您需要   将“tcpip_socket”参数设置为“true”。

     

您可以使用pgAdmin III中内置的postgresql.conf编辑器   编辑postgresql.conf配置文件。改变之后   文件,您需要重新启动服务器进程才能进行设置   有效。

     

如果您仔细检查了配置但仍然出现此错误   消息,你仍然不太可能遇到致命的PostgreSQL   不当行为。您可能有一些低级别的网络连接   问题(例如防火墙配置)。请仔细检查   在向PostgreSQL社区报告错误之前。

我通过VM快照进行了一些测试,发现在命令

之后会发生这种行为

sudo a2enmod rewrite

但我没有发现任何可能表明某些链接或如何解决的问题,因为我需要运行sudo a2enmod rewrite

postgresql.conf连接设置:

# - Connection Settings -

listen_addresses = '*'      # what IP address(es) to listen on;
                    # comma-separated list of addresses;
                    # defaults to 'localhost'; use '*' for all
                    # (change requires restart)
port = 5432             # (change requires restart)
max_connections = 100           # (change requires restart)
#superuser_reserved_connections = 3 # (change requires restart)
unix_socket_directories = '/var/run/postgresql' # comma-separated list of directories
                    # (change requires restart)
#unix_socket_group = ''         # (change requires restart)
#unix_socket_permissions = 0777     # begin with 0 to use octal notation
                    # (change requires restart)
#bonjour = off              # advertise server via Bonjour
                    # (change requires restart)
#bonjour_name = ''          # defaults to the computer name
                    # (change requires restart)

我已经尝试重新启动postgres服务,但它无法正常工作

1 个答案:

答案 0 :(得分:1)

这是我调试对任何数据库的访问的一般过程的一部分。

  

基本测试

旨在确定服务是否正常运行。

检查PostgreSQL是否正在运行:

pgrep -fl postgres
service postgresql status

(如果您的Linux中有状态,那么您应该看到类似的内容):

mortiz@florida:~/.mozilla/firefox/hlmpduzp.default$ sudo service postgresql status
● postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
   Active: active (exited) since Mon 2018-06-11 14:05:04 -03; 3s ago
  Process: 17522 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 17522 (code=exited, status=0/SUCCESS)

Jun 11 14:05:04 florida systemd[1]: Starting PostgreSQL RDBMS...
Jun 11 14:05:04 florida systemd[1]: Started PostgreSQL RDBMS.

如果服务正在运行,请检查端口的基本连接:

telnet 127.0.0.1 5432

如果您无法连接尝试使用localhost或ip地址(而不是环回):

telnet localhost 5432
telnet <your_ip_address> 5432
  • 如果服务未运行,请尝试恢复postgresql.conf备份。
  • 如果服务正在运行,但您无法连接到该端口, 它可能是配置问题,请尝试恢复配置 来自备份。

如果您能够使用telnet连接到端口,那么服务已启动且端口已打开,无论如何,实例或客户端可能存在配置问题。

如果telnet不能使用127.0.0.1但是它使用localhost或 - (your_ip_address / not loopback),那么在客户端设置中更改它。

如果服务正在运行,请检查端口的基本连接:

telnet 127.0.0.1 5432

如果您无法连接尝试使用localhost或ip地址(而不是环回):

telnet localhost 5432
telnet <your_ip_address> 5432
  • 如果服务未运行,请尝试恢复postgresql.conf备份。
  • 如果服务正在运行,但您无法连接到该端口, 它可能是配置问题,请尝试恢复配置 来自备份。

如果您能够使用telnet连接到端口,那么服务已启动且端口已打开,无论如何,实例或客户端可能存在配置问题。

如果telnet不能使用127.0.0.1,但它使用localhost,或者在客户端设置中更改它。

  

测试功能

检查服务的预期行为。在Linux中,某些服务即使出现错误也会启动并产生不良行为。

现在是时候查看服务是否正常运行,我们将使用CLI。运行此命令:

psql -h localhost --username=postgres --list

你应该看到数据库列表:

mortiz@florida:~/.mozilla/firefox/hlmpduzp.default$ psql -h localhost --username=postgres --list
Password for user postgres: 
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(3 rows)

如果这样可行,则您的问题可能出在客户端 pgAdmin 中。尝试安装其他客户端或版本,然后尝试连接到数据库。

  

查看服务器的配置   *也许有人改变了访问数据库的方法。

小心,先备份你的文件。检查允许连接/方法和用户的 PostgreSQL客户端身份验证配置文件主机 - &gt; /etc/postgresql/9.6/main/pg_hba.conf

# This file controls: which hosts are allowed to connect, how clients
# are authenticated, which PostgreSQL user names they can use, which
# databases they can access.  Records take one of these forms:
#
# local      DATABASE  USER  METHOD  [OPTIONS]
# host       DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
# hostssl    DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
# hostnossl  DATABASE  USER  ADDRESS  METHOD  [OPTIONS]

# METHOD can be "trust", "reject", "md5", "password", "gss", "sspi",
# "ident", "peer", "pam", "ldap", "radius" or "cert".  Note that
# "password" sends passwords in clear text; "md5" is preferred since
# it sends encrypted passwords.

如果有任何问题,请告诉我每次测试的结果。