Postgres Short Tips

In der Standardinstallation von Postgres darf der lokale User postgres via localhost auf den Server zugreifen:

su postgres
cd ~
psql

Auflisten aller Datenbanken auf dem Server:

postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 puppetdb  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =T/postgres          +
           |          |          |             |             | postgres=CTc/postgres+
           |          |          |             |             | puppetdb=CTc/postgres
 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
(4 rows)

postgres=#

Auflisten aller User:

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

postgres=#

Das Postgres eigene Yum Repository für 9.4 unter CentOS einrichten + Postgres updaten:

yum install -y http://yum.postgresql.org/9.4/redhat/rhel-7-x86_64/pgdg-centos94-9.4-1.noarch.rpm
yum install -y postgresql94-contrib postgresql94-libs postgresql94 postgresql94-server

Eine Datenbank dumpen:

pg_dump datenbankname
pg_dump: server version: 9.4.4; pg_dump version: 9.2.13
pg_dump: aborting because of server version mismatch

Warum klappt das hier nicht? Im Vorfeld war Postgres aus den CentOS Repos installiert, pg_dump existiert ebenfalls im Postgres eigenen Repo, yum ersetzt aber bei Installationen von Paketen keine Datein. Um das Problem zu lösen einfach das alte Postgres deinstallieren und das neue erneut installieren:

yum erase -y postgresql-libs postgresql postgresql-server
yum reinstall -y postgresql94

Nun klappt auch der Datenbankdump. Man sollte noch drauf achten als welcher User man eine DB versucht zu dumpen. Der root User hat im Normalfall keinen Zugriff auf eine DB, das dumpen muss also als User postgres passieren:

su postgres
cd ~
pg_dump puppetdb > puppetdb.sql

Einrichten von Postgres 9.4 + Datenbanken auf CentOS 7 via Puppet:

class profiles::postgresqlserver {
  class { 'postgresql::globals':
    encoding            => 'UTF-8',
    locale              => 'en_US.UTF-8',
    manage_package_repo => true,
    version             => '9.4',
  }->
  class { '::postgresql::server':
    listen_addresses  => $::ipaddress_eth1,
    ipv4acls          => ['host zabbix zabbix 192.168.0.9/32 md5',],
  }
  class {'::postgresql::server::contrib': }
  postgresql::server::db { 'zabbix':
    user     => 'zabbix',
    password => postgresql_password('zabbix', 'e85zvffd78zx4jurijmdtfhvhr57dh58ujxri'),
  }
}
This entry was posted in General, Linux, Puppet, Short Tips. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.