Postgres

De Linuxmemo.


Bases de données:

sudo -u postgres psql

Sommaire

[modifier] Démarrage rapide de Postgres

./configure
gmake
su
gmake install
adduser postgres
mkdir /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data
su - postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data >logfile 2>&1 &
/usr/local/pgsql/bin/createdb test
/usr/local/pgsql/bin/psql test
CREATE USER tom WITH PASSWORD 'myPassword';
CREATE DATABASE jerry;
GRANT ALL PRIVILEGES ON DATABASE jerry to tom;
\q

sous bash

su - postgres
psql

CREATE USER user_name;
CREATE DATABASE nomdb;
GRANT ALL ON DATABASE user_name TO nomdb;

psql -c "ALTER USER nom_user WITH PASSWORD 'password';"
psql -c "DROP USER jonathan;"
ALTER USER root WITH SUPERUSER;

[modifier] Commandes du client "psql"

\? = aide suivante
\l = liste des bases
\c nombase = connexion a la base nombase
\d = liste des tables
\q = quitter
\h = aide syntaxe SQL
SELECT version(); = version PostgreSQL
SELECT current_date; = date actuelle
\i fichier.sql = lit les instructions du fichier fichier.sql
\d table = décrit une table (comme DESCRIBE avec MySQL)
-- commentaire

[modifier] Sauvegarde restauration de base

Le principe est de générer un fichier texte de commandes SQL (appelé « fichier dump »), qui, si on le renvoie au serveur, recrée une base de données identique à celle sauvegardée.

  • sauvegarde
pg_dump -h 127.0.0.1 -U "user" -W base_de_donnees > fichier_de_sortie

ou

pg_dumpall -h localhost -U postgres -f postgres-all-backup.sql

pour le mot de passe (rep perso du compte qui exécute la sauvegarde)

vim ~/.pgpass
nom_hote:port:database:nomutilisateur:motdepasse
ou
nom_hote:port:*:nomutilisateur:motdepasse
chmod 600 ~/.pgpass
  • restauration
pg_dump -h 127.0.0.1 -U "user" -W base_de_donnees < fichier_d_entree

To dump all databases:

$ pg_dumpall > db.out

To restore all databases from this file, you can use (il faut que l'utilisateur "postgres" puisse lire le fichier db.sql):

$ sudo -u postgres psql -f db.out

[modifier] Recettes

  • Taille d'une base
SELECT pg_size_pretty(pg_database_size('nom_base'));
  • Taille d'une table
SELECT pg_size_pretty(pg_relation_size('nom_table'));
  • Export CSV d’une requête postgresql
COPY (select id, firstname, name,  email from users) TO '/tmp/export_users.csv' WITH CSV;
  • compter les lignes, fonction COUNT (*)
SELECT	COUNT (*) FROM table;
  • changer le mot de passe d'un utilisateur
ALTER USER msf WITH PASSWORD 'msf';

[modifier] Astuces

  • Rebuild all objects in this database that use the default collation and run ALTER DATABASE postgres REFRESH COLLATION VERSION
  1. Connect to postgres
sudo -u postgres psql

List all databases to ensure your database exists

\l
Alter gvmd & postgres database to refresh Collation version
ALTER DATABASE gvmd REFRESH COLLATION VERSION;
ALTER DATABASE postgres REFRESH COLLATION VERSION;

Exit postgres

\q or exit

Restart GSM services

systemctl daemon-reload && systemctl restart gvmd.service gsad.service

Check if warnings are fixed

gvm-check-setup

[modifier] Références

http://blog.endpoint.com/2009/12/mysql-and-postgres-command-equivalents.html

Voir: Sql

Outils personnels