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'), } }