Artikel mit Tag datenbank

Serverumzug mit Serendipity - Datenbank Update notwendig

Vor einiger Zeit ist ITrig auf einen neuen Server umgezogen.

Nach dem Umzug wollte das Blog nicht mehr so richtig funktionieren. Auch der Adminbereich war nicht mehr erreichbar und zeigte komische Fehler an. Nach etwas Recherche war schnell klar, dass bei Serendipity Pfade leider hart in der Datenbank stehen, welche nicht mehr auf die neue Serverstruktur passten.

Da diese Schritte nicht in der Umzugsanleitung der S9y Seite vorhanden sind, bzw. ich sie einfach nicht gefunden habe, möchte ich hier das Vorgehen dokumentieren.

s9y-logo

Serendipity Blog Pfad in der Datenbank anpassen

Zunächst wird die Ausgabe des aktuellen Pfads geprüft.

mysql -uroot -p
USE s9y_db;
SELECT * FROM `serendipity_config` WHERE name='serendipityPath'

               serendipityPath               /alterPfad/html/www/

Nun kann der Pfad auf die neue Struktur aktualisiert werden.

UPDATE `serendipity_config` set value = '/neuerPfad/' WHERE name = 'serendipityPath';

Ein weiterer Wert, der vielleicht angepasst werden muss ist serendipityHTTPPath.

SELECT * FROM `serendipity_config` WHERE name='serendipityHTTPPath'

UPDATE `serendipity_config` set value = '/NeuerPfad/' WHERE name = 'serendipityHTTPPath';

Sollte sich zusätzlich die URL geändert haben, dann kann auch diese direkt angepasst werden.

SELECT * FROM `serendipity_config` WHERE name = 'defaultBaseURL';

UPDATE `serendipity_config` set value = 'https://neuedomain.de' WHERE name = 'defaultBaseURL';

Nun sollte das System wieder wie gewohnt auf dem neuen Server erreichbar sein.

pgAdmin4 - Installation und ein erster Blick auf die neue PostgreSQL Schaltzentrale

Vor gut einem Monat ist die erste Beta Version von pgAdmin erschienen.
Die neue Version 4 (der mittlerweile in die Jahre gekommenen Version 3) wurde komplett überarbeitet und neu geschrieben.

Inzwischen wurde Beta 3 veröffentlicht, höchste Zeit einen kurzen Blick auf die Installation und das neuen Design zu werfen.

pgadmin4-logoDie Schaltzentrale für PostgreSQL Datenbanken hat einen modernen Anstrich erhalten und zeigt sich bei einem ersten Blick auf die neue Weboberfläche recht übersichtlich. So stellt das neue Dashboard die wichtigsten Aktivitäten auf einer Datenbank live dar. Die Ansicht ist responsive und erlaubt somit auch den Aufruf via Tablet und Co.

Insgesamt wurde auf eine einfache und übersichtliche Darstellung geachtet, so sind viele Einstellungen via Schieberegler zu aktivieren (siehe Screenshot).

Auch die Flexibilität wurde stark erhöht. Tabs lassen sich nun beliebig auf der Oberfläche verschieben und platzieren.

Besonders zu erwähnen ist die doppelte Funktion von pgAdmin. Es kann als Webserverwendung oder Clientsoftware genutzt werden.

pgadmin4-stats

Die komplett überarbeitete DB Software wurde in Python geschrieben und verwendet das  Flask Framework als Backend. Das Frontend besteht aus dem bekannten Mix von Javascript und jQuery.

Durch das moderne Redesign von pgAdmin sind aber auch ein paar wenige Funktionen auf der Strecke geblieben, so stehen der Query Builder, sowie der Datenbank Designer nicht mehr zur Verfügung.

pgadmin4-einstellungen

Die Installation

fällt durch die Hilfe von PIP recht leicht und kann in wenigen Schritten erledigt werden.

Zunächst müssen die benötigten Pakete geladen werden. Dazu zählt natürlich ein Datenbank Server, sowie der Python Pakete Manager PIP. Basis System ist Ubuntu 16.04 LTS.

sudo apt-get install postgresql-9.5
sudo apt-get install python-pip
sudo apt-get install libpq-dev
wget https://ftp.postgresql.org/pub/pgadmin3/pgadmin4/v1.0-beta3/pip/pgadmin4-1.0b3-py2-none-any.whl

Alte Versionen sind hier zu finden

https://ftp.postgresql.org/pub/pgadmin3/pgadmin4/v1.0-beta1/pip/pgadmin4-1.0_beta1-py2-none-any.whl
https://ftp.postgresql.org/pub/pgadmin3/pgadmin4/v1.0-beta2/pip/pgadmin4-1.0b2-py2-none-any.whl

Nun folgt die Paketinstallation

pip install pgadmin4-1.0_beta3-py2-none-any.whl
Please add the directory containing pg_config to the PATH

or specify the full executable path with the option:

    python setup.py build_ext --pg-config /path/to/pg_config build ...

or with the pg_config option in 'setup.cfg'.

pgadmin4-installation

Vor dem ersten Start muss eine Config Datei angelegt werden

cd /usr/local/lib/python2.7/dist-packages/pgadmin4
touch config_local.py

Diese lokale Konfiguration muss auf jeden Fall folgende Werte enthalten:

SECRET_KEY = 'GeheimesGeheimnis2'
SECURITY_PASSWORD_SALT = 'GeheimesGeheimnis3'
CSRF_SESSION_KEY = 'GeheimesGeheimnis1'

Die vorhandenen Werte können der config.py entnommen werden

cat config.py |grep CSRF
CSRF_SESSION_KEY = 'GeheimesGeheimnis1'

cat config.py |grep SECRET_KEY
SECRET_KEY = 'GeheimesGeheimnis2'

cat config.py |grep SECURITY_PASSWORD_SALT
SECURITY_PASSWORD_SALT = 'GeheimesGeheimnis3'

Weitere Konfigurationen, wie beispielsweise eine andere Serveradresse "DEFAULT_SERVER = '0.0.0.0" müssen nicht zwingend hinterlegt werden, hier gelten die Default Werte aus der Hauptkonfiguration. 

Bei einem Betrieb als Webserver sollten die einzelnen Einstellungen genau unter die Lupe genommen werden.

Danach kann die Anwendung zum ersten Mal gestartet werden

    cd /usr/local/lib/python2.7/dist-packages/pgadmin4
    python ./pgAdmin4.py

            pgAdmin 4 - Application Initialisation
            ======================================


            The configuration database - '/home/lars/.pgadmin/pgadmin4.db' does not exist.
            Entering initial setup mode...
            NOTE: Configuring authentication for SERVER mode.

            Enter the email address and password to use for the initial pgAdmin user account:

            Email address: xxx@test.de

Ein Aufruf der Anwendung erfolgt über den Browser

http://127.0.0.1:5050

Die Anmeldung erfolgt mit den bei der Ersteinrichtung hinterlegten Daten.

Für die Einrichtung und Verwendung des neuen pgAdmin4 wurde bereits eine ausführliche Dokumentation zur Verfügung gestellt.

Fazit

Über den Release Termin der finalen Version konnte ich leider keine Informationen finden. Die aktuelle Beta Version sieht schick aus, besticht durch ihre aufgeräumte Oberfläche und macht Lust auf mehr. Auch für Windowsnutzer steht bereits eine lauffähige Testversion zur Verfügung.

Nun heißt es warten auf die finale Version, um ein endgültiges Fazit ziehen zu können. Bis jetzt ist die Tendenz sicherlich positiv.

Ist mein Account gehackt worden? Have I Been Pwned spürt befallene Mailadressen auf

Die Liste mit geleakten Passwort-(Hash)-Listen wird immer länger. Die neueste Veröffentlichung stammt von LinkedIn mit 4,5GB Datenmaterial.

Der aktuelle Leak reiht sich in eine lange Liste ein, angefangen von Adobe über Myspace bis hin zu Tumblr und diese wird vermutlich die nächsten Jahre noch länger werden.
Um so wichtiger ist es, die eigenen Accounts mit verschiedenen Passwörtern zu bestücken und nach solchen Hacks umgehend zu ändern.
Denn aktuelle Programme, wie Hashcat, haben mit ungesalzenen SHA1-Hashes, wie im Falle von LinkedIn nicht allzu große Probleme.

pwned


Have I Been Pwned


Um zu überprüfen, ob der eigene Account von einem Hack betroffen ist, hat der australische Microsoft-Direktor und Sicherheitsexperte Troy Hunt die Seite Have I Been Pwned ins Leben gerufen.

Hier können Nutzer ihre E-Mail-Adresse eingeben und erfahren danach, ob diese in einem der geleakten Dateien vorhanden ist.
Zusätzlich wird die Option angeboten, sich via Mail benachrichtigen zu lassen, sollte bei neueren Daten ein Treffer dabei sein.
Die Webseite durchsucht (Stand 06/2016) 110 geleakte Datenpakete mit fast 1 Million Accountdaten.

dataleacks


Ein Teil davon kann jedoch nur über eine vorhergehende E-Mail-Verifikation eingesehen werden, dabei handelt es sich meist um Daten von Dating-Portalen wie Ashley Madison.

Pwned

Fazit

Nach einem Leak von Profildaten sollte jeder seine Zugangsdaten bei dem betroffenen Anbieter ändern. Keiner weiß wie sicher diese verschlüsselt sind, leider meistens nicht optimal.

Have I Been Pwned bietet hier eine gute Möglichkeit Mailadressen zu überprüfen oder mithilfe der Benachrichtigungen im Blick zu behalten.
Bei der Häufigkeit an Veröffentlichungen von gehackten Daten verliert der Nutzer schnell den Überblick, denn nun ist schon VKontakte an der Reihe.

Für Router Sicherheit hatte ich vor zwei Jahren die Seite Routerpwn vorgestellt, diese hilft beim Überprüfen unsicherer Routerfirmware.

 

22 praktische PostgreSQL Befehle

Zum Wochenende eine kleine Auflistung praktischer PostgreSQL Befehle.

postgresql

Zu PostgreSQL verbinden

In eine PostgreSQL Konsole Einloggen

sudo -u postgres psql

Einloggen und direkt zu einer Datenbank verbinden

sudo -u postgres psql -d datanbank


Arbeiten mit Konsolenbefehlen

Alle Datenbanken anzeigen

postgres=# \l
                                  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)

oder ohne vorherigen Login mit "sudo -u postgres psql -l"

Benutzer auflisten

postgres-# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication | {}
 yolo      | Superuser                                      | {}

Zu einer Datenbank verbinden

postgres=#\c Datenbankname

You are now connected to database "Datenbankname" as user "postgres".

Tabellen anzeigen

postgres=#\dt 

Schemas anzeigen

postgres=#\dn

Funktionen anzeigen

postgres=#\df oder df+

Sequenzen anzeigen

postgres=#\ds

Views anzeigen

postgres=#\dv

Datenbank und Benutzer mit Rechten erstellen

CREATE datenbank;
CREATE USER benutzer WITH PASSWORD 'Geheim';  
GRANT ALL PRIVILEGES ON DATABASE datenbank to benutzer; 

Alle verfügbaren Konsolenbefehle anzeigen

postgres=#\?

Eine bestimmte Datenbankgröße auslesen

select pg_database_size('Datenbankname');

oder in schön

SELECT pg_size_pretty(pg_database_size('Datenbankname'));

oder alle vorhanden Datenbankgrößen anzeigen

select datname, pg_size_pretty(pg_database_size(datname)) as size from pg_database;


Offene Datenbankverbindungen anzeigen

SELECT datname,usename,client_addr,client_port FROM pg_stat_activity ;

Die Konfiguration neu laden (ohne Neustart)

select pg_reload_conf();

Logfile Rotation anwerfen

select pg_rotate_logfile()

PostgreSQL verlassen

postgres=#\q

Backup und Wiederherstellung

Ein Datenbank Backup erstellen

pg_dump --user username --host hostname -b -F c datenbank > /tmp/datenbank.dump 

Alle verfügbaren Datenbanken sichern

pg_dumpall

Datenbank wiederherstellen

pg_restore --user username --host hostname -c -d datenbank datenbank.dump


Das könnte dich auch interessieren

PostgreSQL 9.4 Server auf Ubuntu installieren und mit der neuen SQL Funktion ALTER SYSTEM konfigurieren

Heute wird ein kleiner Ausflug in die Datenbank Welt gemacht.
Grund dafür ist die neue Version der Open Source Datenbank PostgreSQL Version 9.4., welche Ende 2014 veröffentlicht wurde.
Neben zahlreichen Verbesserungen bietet diese mit "ALTER SYSTEM" die Möglichkeit die Systemkonfiguration direkt aus der SQL Konsole vorzunehmen.
Mit dieser Neuerung lassen sich alle Systemeinstellungen der postgresql.conf mit Hilfe einer postgresql.conf.auto überschreiben.
Die postgresql.auto.conf wird beim Start als letztes geladen und enthält die mit "ALTER SYSTEM" gesetzten Werte.

Zunächst ist aber etwas Vorarbeit notwendig.
Referenzsystem ist wie immer Ubuntu Server 14.04

postgresql


Installieren des PostgreSQL Servers 9.4

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install postgresql

Einloggen in die PostgreSQL Konsole

Zunächst sollte das Passwort geändert werden

sudo -u postgres psql postgres
postgres=#
             \password
                        Enter new password:
                        Enter it again:
            \q

Erfolgt ein Login nicht direkt auf dem Localhost, sind weitere Konfiguration notwendig

Die Konfiguration der Zugriffsrechte erfolgen unter "/etc/postgresql/9.4/main/pg_hba.conf"

Verbindungsinformationen anzeigen

postgres=# \conninfo
You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432".

Anlegen eines neuen Benutzers mit Superuser Rechten

Dieser Schritt dient der Übersicht, für die Verwendung des SYSTEM ALTER Befehls kann auch der Standardbenutzer "postgres" verwendet werden.
Superuser Rechte sind aber zwingend notwendig.

sudo -u postgres createuser -s -D -P yolo

Erklärung der Befehle

  • -D, --no-createdb         role cannot create databases (default)
  • -P, --pwprompt            assign a password to new role
  • -s, --superuser              role will be superuser

Alternativ kann ein Benutzer auch interaktiv angelegt werden

sudo -u postgres createuser --interactive yolo2

Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n

Datenbank in PostgreSQL anlegen

Auch dieser Schritt dient nur der Übersicht. Für die Systemkonfiguration muss dies vorgenommen werden.

sudo -u postgres createdb -O yolo datenbank

Erklärung des Befehls

  • -O, --owner=OWNER            database user to own the new database

Eingerichtete Benutzer und Rechte anzeigen

postgres=# \du

List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication | {}
 yolo      | Superuser                                      | {}


   


PostgreSQL mit ALTER SYSTEM konfigurieren

Nach ein paar Grundlagen nun der Schritt zur Konfiuration via ALTER SYSTEM
Im Folgenden möchte ich ein paar Werte setzen, die bei einer Grundinstallation gerne anfallen.
Als Grundlage habe ich pgTune genommen (siehe Artikel)

Folgende Werte sollen mit SQL Kommandos angepasst werden

max_connections = 200
shared_buffers = 512MB
effective_cache_size = 1536MB
work_mem = 2621kB
maintenance_work_mem = 128MB
checkpoint_segments = 64
checkpoint_completion_target = 0.9
wal_buffers = 16MB


Zunächst muss ein Login erfolgen, danach können Befehle mit der Kombination ALTER SYSTEM SET abgesetzt werden.

sudo -u postgres psql postgres

postgres=# ALTER SYSTEM SET max_connections TO 200;
postgres=# ALTER SYSTEM SET shared_buffers TO 512;
postgres=# ALTER SYSTEM SET effective_cache_size = '1536MB';
postgres=# ALTER SYSTEM SET work_mem = '2621kB';
postgres=# ALTER SYSTEM SET checkpoint_segments TO 64;
postgres=# ALTER SYSTEM SET wal_buffers ='16MB';
postgres=# ALTER SYSTEM SET checkpoint_completion_target TO 0.9;
postgres=# ALTER SYSTEM SET wal_buffers = '16MB';

Neuladen der Konfiguration

Wichtig: Die Änderungen werden erst wirksam, sobald die Konfiguration neu eingelesen wurde.

Die Konfiguration lässt sich mit dem folgenden Kommando neu einlesen, ohne das ein Datenbankverbindung verloren geht.

postgres=# SELECT pg_reload_conf();

Hier ist zu bedenken das manche Einstellungen, wie z.B. "max_connections" einen richtigen Server Neustart benötigen, bevor sie greifen

sudo service postgres restart

Kontrolle der vorhanden Werte

Gesetzte Konfigurationen lassen sich ebenfalls schnell und einfach per SQL Kommando auslesen. Der Aufruf vor und nach einer Änderung bietet sich an.

postgres=# SHOW shared_buffers;
 shared_buffers
----------------
 400MB
(1 row)

Einzelne Systemwerte auf Standard zurücksetzen

postgres=# SHOW checkpoint_completion_target;
 checkpoint_completion_target
------------------------------
 0.9
(1 row)

postgres=# ALTER SYSTEM SET checkpoint_completion_target TO DEFAULT;
ALTER SYSTEM

postgres=# SELECT pg_reload_conf();
 pg_reload_conf
----------------
 t
(1 row)

postgres=# SHOW checkpoint_completion_target;
 checkpoint_completion_target
------------------------------
 0.5
(1 row)

Alle Werte der postgresql.auto.conf zurücksetzen

postgres=# ALTER SYSTEM RESET ALL;

Wie bereits oben erwähnt, werden die gesetzten Konfigurationen in eine postgresql.auto.conf geschrieben.
Diese befindet sich nicht im Verzeichnis der postgresql.conf sondern unter

nano /var/lib/postgresql/9.4/main/postgresql.auto.conf

    # Do not edit this file manually!
    # It will be overwritten by ALTER SYSTEM command.
    wal_level = 'hot_standby'
    shared_buffers = '512'
    max_connections = '200'
    effective_cache_size = '1536MB'
    work_mem = '2621kB'
    checkpoint_segments = '64'
    wal_buffers = '16MB'


Troubleshooting

Im Log taucht folgende Meldung auf:

LOG:  parameter "wal_buffers" cannot be changed without restarting the server
LOG:  configuration file "/var/lib/postgresql/9.4/main/postgresql.auto.conf" contains errors; unaffected changes were applied

Wie die Fehlermeldung selbst erklärt, ist ein Neustart des Servers mit "sudo service postgresql restart" notwendig.

Fazit

Die neue Möglichkeit in 9.4 ein System im laufenden Betrieb zu konfigurieren, ist wirklich praktisch, besonders für diejenigen die eine SQL Konsole ihre Heimat nennen. Dennoch ist Vorsicht geboten, denn auf den ersten Blick ist nicht ersichtlich, ob eine postgresql.auto.conf geladen wird und Konfigurationen in der postgresql.conf nicht beachtet werden.