PostgreSQL installeren, configureren
zie ook ons PostgreSQL artikel
Ik volg een (openSUSE) installatie met dit Engelstalig artikel, en vat het ook even samen…
https://www.howtoforge.com/tutorial/how-to-install-postgresql-and-phppgadmin-on-opensuse-leap-42.1/#step-install-postgresql
Opm: Ik installeerde via Yast ipv met zypper; zoek “postgres” en je krijgt heel wat opties; installeer de server, de client, de management tool pgadmin3, de webtool phpPgAdmin, de odbc- en libreoffice-drivers, … De server heeft het versienummer in de naam (postgresql94), de client niet (postgresql).
- Leap 42.2 – postgresql94 – postgres – pgadmin .. – phpPgAdmin ..
- openSUSE 13.1 – postgres92 (9.2) – postgres (psql 9.2) – pgadmin3 1.16 – phpPgAdmin 5.0.4
Starten doe je zo:
systemctl start postgresql
vroeger: /etc/init.d/postgresql start
… en checken of hij draait in details als (* volledig log zie onderaan):
linuxbox:/home/cybr # systemctl status postgresql
postgresql.service - PostgreSQL database server
Active: active (running) since Tue 2017-03-14 22:01:20 CET; 9s ago
linuxbox:/home/cybr # journalctl -u postgresql
Mar 14 22:01:19 linuxbox postgresql-init[4956]: 2017-03-14 22:01:19 CET HINT: Future log output will appear in directory "pg_log".
Mar 14 22:01:20 linuxbox systemd[1]: Started PostgreSQL database server.
Met veel details en uitleg:
ps aux|grep postgres
wat de hiërarchie toont van de processen (=> pid hoofdproces):
ps -AH|grep postgres
Bij installatie is er een user postgres gemaakt op de server;
compgen -u
je moet werken als die gebruiker om verder te configureren (als root wordt niet toegelaten in de standaard configuratie):
linuxbox:/home/cybr # su - postgres
postgres@linuxbox:~>
Start de commandolijn “client” psql:
postgres@linuxbox:~> psql
psql (9.4.9)
Type "help" for help.
postgres=#
Zet eerst een wachtwoord:
postgres=# \password postgres
Enter new password:
Enter it again:
postgres=#
Je geraakt uit de postgres commandolijn met \q
Maak, nog steeds als postgres user op je Linux systeem een nieuwe gebruiker en rol aan, en geef hem ineens superkrachten (en een database):
createuser -s nano
createdb nano_db
Geen reaktie = geen foutmeldingen.
Dan terug inloggen in psql en:
postgres=# alter user nano with encrypted password 'nano2test';
ALTER ROLE
postgres=# grant all privileges on database nano_db to nano;
GRANT
Op een andere terminal pas je de instellingen aan om op een publiek ip adres te luisteren, zodat je vanop een andere computer toegang krijgt, of een applicatie toegang kan geven.
mcedit /var/lib/pgsql/data/postgresql.conf
en wijzig de gepaste lijnen naar:
listen_addresses = 'localhost'
port = 5432
En dan de wachtwoordcontrole naar md5:
mcedit /var/lib/pgsql/data/pg_hba.conf
(de oude standaard waarde staat er nog boven)
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
# local all all peer
local all all md5
# IPv4 local connections:
# host all all 127.0.0.1/32 ident
host all all 127.0.0.1/32 md5
# IPv6 local connections:
# host all all ::1/128 ident
host all all ::1/128 md5
en herstart de server:
systemctl restart postgresql
Om phpPgAdmin toegang te geven:
mcedit /etc/phpPgAdmin/config.inc.php
en vul de localhost in:
$conf['servers'][0]['host'] = '';
naar
$conf['servers'][0]['host'] = 'localhost';
Bovendien heeft Apache wat extra activatie nodig; check of php5
en version
geladen zijn:
a2enmod -l
Indien niet:
a2enmod php5
a2enmod version
Herstart apache en postgresql.
In phpPgAdmin (http://localhost/phpPgAdmin/)
kreeg ik voordien te zien:
Attempt to connect with invalid server parameter, possibly someone is trying to hack your system.
Maar nu krijg ik netjes een welkom, een taalkeuze en als ik op Servers klik:
Server Host Port Username Actions
PostgreSQL localhost 5432
Ik kan nu (op PostgreSQL klikken en) inloggen met de voorheen gemaakte nano account. Ik zie de nano_db
database en postgres
(default administrative connection database).
Inloggen met de administratieve account postgres gaat niet! (maar dat is dus de bedoeling).
En de server terug stoppen:
systemctl stop postgresql
(daarna werkt natuurlijk phpPgAdmin niet meer, en blijft hangen op : “Login to PostgreSQL”)
Klaar!
(en nu misschien eens proberen te gebruiken vanuit Gambas?)
– – –
* vervolg starten/checken server:
Na het starten checken of de server draait:
(terug naar boven)
linuxbox:/home/cybr # systemctl status postgresql
● postgresql.service - PostgreSQL database server Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; vendor preset: disabled) Active: inactive (dead) linuxbox:/home/cybr # systemctl start postgresql linuxbox:/home/cybr # systemctl status postgresql ● postgresql.service - PostgreSQL database server Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; vendor preset: disabled) Active: active (running) since Tue 2017-03-14 22:01:20 CET; 9s ago Process: 4956 ExecStart=/usr/lib/postgresql-init start (code=exited, status=0/SUCCESS) Main PID: 5007 (postgres) Tasks: 7 (limit: 512) CGroup: /system.slice/postgresql.service ├─5007 /usr/lib/postgresql94/bin/postgres -D /var/lib/pgsql/data ├─5008 postgres: logger process ├─5010 postgres: checkpointer process ├─5011 postgres: writer process ├─5012 postgres: wal writer process ├─5013 postgres: autovacuum launcher process └─5014 postgres: stats collector process . Mar 14 22:00:54 linuxbox systemd[1]: Starting PostgreSQL database server... Mar 14 22:00:55 linuxbox postgresql-init[4956]: Initializing PostgreSQL 9.4.9 at location /var/lib/pgsql/data Mar 14 22:01:19 linuxbox postgresql-init[4956]: 2017-03-14 22:01:19 CET LOG: redirecting log output to logging collector process Mar 14 22:01:19 linuxbox postgresql-init[4956]: 2017-03-14 22:01:19 CET HINT: Future log output will appear in directory "pg_log". Mar 14 22:01:20 linuxbox systemd[1]: Started PostgreSQL database server.
linuxbox:/home/cybr # journalctl -u postgresql
-- Logs begin at Wed 2017-02-15 00:34:10 CET, end at Tue 2017-03-14 22:01:20 CET. -- Mar 14 22:00:54 linuxbox systemd[1]: Starting PostgreSQL database server... Mar 14 22:00:55 linuxbox postgresql-init[4956]: Initializing PostgreSQL 9.4.9 at location /var/lib/pgsql/data Mar 14 22:01:19 linuxbox postgresql-init[4956]: 2017-03-14 22:01:19 CET LOG: redirecting log output to logging collector process Mar 14 22:01:19 linuxbox postgresql-init[4956]: 2017-03-14 22:01:19 CET HINT: Future log output will appear in directory "pg_log". Mar 14 22:01:20 linuxbox systemd[1]: Started PostgreSQL database server.
linuxbox:/home/cybr # ps aHux|grep postgres
postgres 2865 0.0 0.0 36168 2236 ? Ss 10:28 0:00 /usr/lib/systemd/systemd --user postgres 2866 0.0 0.0 67940 2368 ? S 10:28 0:00 (sd-pam) postgres 2904 0.0 0.2 105184 8764 ? S 10:28 0:00 /usr/lib/postgresql92/bin/postgres -D /var/lib/pgsql/data postgres 2905 0.0 0.0 64932 1324 ? Ss 10:28 0:00 postgres: logger process postgres 2907 0.0 0.0 105184 1532 ? Ss 10:28 0:00 postgres: checkpointer process postgres 2908 0.0 0.0 105184 1540 ? Ss 10:28 0:00 postgres: writer process postgres 2909 0.0 0.0 105184 1304 ? Ss 10:28 0:00 postgres: wal writer process postgres 2910 0.0 0.0 106036 2744 ? Ss 10:28 0:00 postgres: autovacuum launcher process postgres 2911 0.0 0.0 64928 1508 ? Ss 10:28 0:00 postgres: stats collector process root 3075 0.0 0.0 9288 920 pts/3 S+ 10:39 0:00 grep --color=auto postgres
linuxbox:/home/cybr # ps -AH|grep postgres
2904 ? 00:00:00 postgres 2905 ? 00:00:00 postgres 2907 ? 00:00:00 postgres 2908 ? 00:00:00 postgres 2909 ? 00:00:00 postgres 2910 ? 00:00:00 postgres 2911 ? 00:00:00 postgres