Die Verbindung zu einer Ruby on Rails PostgreSQL-Datenbank von einem lokalen Netzwerk (LAN/extern) hat einige Zeit in Anspruch genommen, daher teile ich hier die Lösung.
database.yml
development:
adapter: postgresql
encoding: unicode
database: englishtool_development
pool: 5
username: englishtool
password: password1
host: 192.168.99.101
test:
adapter: postgresql
encoding: unicode
database: englishtool_test
pool: 5
username: englishtool
password: password1
host: 192.168.99.101
Fehler aufgetreten…
$ rake db:setup
could not connect to server: Connection refused
Is the server running on host "192.168.99.101" and accepting
TCP/IP connections on port 5432?
Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "database"=>"englishtool_development", "pool"=>5, "username"=>"englishtool", "password"=>"password1", "host"=>"192.168.99.101"}
rake aborted!
PG::ConnectionBad: could not connect to server: Connection refused
Is the server running on host "192.168.99.101" and accepting
TCP/IP connections on port 5432?
Tasks: TOP => db:setup => db:schema:load_if_ruby => db:create
Lösung
(Vorausgesetzt, Sie können sich normalerweise von localhost auf dem lokalen Computer verbinden.)
- postgresql.conf-Datei ändern
PostgreSQL erlaubt standardmäßig nur Verbindungen vom lokalen Host.
sudo vim /etc/postgresql/10/main/postgresql.conf
# Fügen Sie diese Zeile hinzu
listen_addresses = '*'
- Konfigurieren Sie, welche Clients eine Verbindung herstellen können
sudo vim /etc/postgresql/10/main/pg_hba.conf
# IPv4 local connections:
host all all 127.0.0.1/32 md5
+ # local network
+ # host all all 192.168.0.0/16 md5
+ host all all 0.0.0.0/0 trust
Dies erlaubt alle IPs ohne Authentifizierung, also ist die Sicherheit weit offen, aber es ist in Ordnung für eine Entwicklungsumgebung.
Für den IP-Teil sollte 192.168.0.0/16 auch funktionieren. Ich habe es nicht überprüft, also kann ich es nicht mit Sicherheit sagen. Der Authentifizierungsteil sollte auch mit md5 in Ordnung sein.
- Neustart
sudo /etc/init.d/postgresql restart
Überprüfung
pgweb --url postgres://englishtool:[email protected]:5432/englishtool_development
$ rake db:setup
Database 'englishtool_development' already exists
Database 'englishtool_test' already exists
-- enable_extension("plpgsql")
-> 0.1347s
-- enable_extension("plpgsql")
-> 1.4060s