Postgres

De Linuxmemo.

(Différences entre les versions)
(Astuces)
 
(23 versions intermédiaires masquées)
Ligne 3 : Ligne 3 :
Bases de données:
Bases de données:
-
=== Démarrage rapide de Postgres ===
+
sudo -u postgres psql
 +
 
 +
==Démarrage rapide de Postgres==
  ./configure
  ./configure
Ligne 18 : Ligne 20 :
  /usr/local/pgsql/bin/psql test
  /usr/local/pgsql/bin/psql test
-
  sous bash
+
  CREATE USER tom WITH PASSWORD 'myPassword';
 +
CREATE DATABASE jerry;
 +
GRANT ALL PRIVILEGES ON DATABASE jerry to tom;
 +
\q
 +
 
 +
sous bash
  su - postgres
  su - postgres
-
  createuser root
+
  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 "ALTER USER nom_user WITH PASSWORD 'password';"
  psql -c "DROP USER jonathan;"
  psql -c "DROP USER jonathan;"
-
=== Commandes du client "psql" ===
+
ALTER USER root WITH SUPERUSER;
 +
== Commandes du client "psql" ==
 +
'''\? = aide suivante'''
  \l = liste des bases
  \l = liste des bases
  \c nombase = connexion a la base nombase
  \c nombase = connexion a la base nombase
  \d = liste des tables
  \d = liste des tables
  \q = quitter
  \q = quitter
-
  \h = aide
+
  '''\h = aide syntaxe SQL'''
  SELECT version(); = version PostgreSQL
  SELECT version(); = version PostgreSQL
  SELECT current_date; = date actuelle
  SELECT current_date; = date actuelle
Ligne 36 : Ligne 50 :
  \d table = décrit une table (comme DESCRIBE avec MySQL)
  \d table = décrit une table (comme DESCRIBE avec MySQL)
 +
-- commentaire
 +
 +
==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
 +
 +
==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';
 +
 +
==Astuces==
 +
*Rebuild all objects in this database that use the default collation and run ALTER DATABASE postgres REFRESH COLLATION VERSION
 +
#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
==Références==
==Références==

Version actuelle en date du 4 février 2025 à 13:32


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