Outils pour utilisateurs

Outils du site


linux:postgresql (lu 84933 fois)

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
linux:postgresql [24-09-2018 16:27]
edmc73 [Base]
linux:postgresql [23-03-2023 14:57] (Version actuelle)
edmc73 [Taille]
Ligne 49: Ligne 49:
 0.0.0.0/0 correspond à toutes les ip possibles 0.0.0.0/0 correspond à toutes les ip possibles
  
 +==== Le type d'authentification ====
  
-Redémarrez le serveur postgresql +  * https://docs.postgresql.fr/10/client-authentication.html#auth-pg-hba-conf
-  service postgresql restart+
  
 +Indique la méthode d'authentification à utiliser lors d'une connexion via cet enregistrement. Les choix possibles sont résumés ici ; les détails se trouvent dans la Section 20.2, « Méthodes d'authentification ».
 +
 +=== trust ===
 +Autorise la connexion sans condition. Cette méthode permet à quiconque peut se connecter au serveur de bases de données de s'enregistrer sous n'importe quel utilisateur PostgreSQL™ de son choix sans mot de passe ou autre authentification. Voir la Section 20.3.1, « Authentification trust » pour les détails.
 +
 +=== reject ===
 +Rejette la connexion sans condition. Ce cas est utile pour « filtrer » certains hôtes d'un groupe, par exemple une ligne reject peut bloquer la connexion d'un hôte spécifique alors qu'une ligne plus bas permettra aux autres hôtes de se connecter à partir d'un réseau spécifique.
 +
 +=== scram-sha-256 ===
 +Réalise une authentification SCRAM-SHA-256 afin de vérifier le mot de passe utilisateur. Voir Section 20.3.2, « Authentification par mot de passe » pour les détails.
 +
 +=== md5 ===
 +Réalise une authentification SCRAM-SHA-256 ou MD5 afin de vérifier le mot de passe utilisateur. Voir Section 20.3.2, « Authentification par mot de passe » pour les détails.
 +
 +=== password ===
 +Requiert que le client fournisse un mot de passe non chiffré pour l'authentification. Comme le mot de passe est envoyé en clair sur le réseau, ceci ne doit pas être utilisé sur des réseaux non dignes de confiance. Voir la Section 20.3.2, « Authentification par mot de passe » pour les détails.
 +
 +=== gss ===
 +Utilise GSSAPI pour authentifier l'utilisateur. Disponible uniquement pour les connexions TCP/IP. Voir Section 20.3.3, « Authentification GSSAPI » pour les détails.
 +
 +=== sspi ===
 +Utilise SSPI pour authentifier l'utilisateur. Disponible uniquement sur Windows. Voir Section 20.3.4, « Authentification SSPI » pour plus de détails.
 +
 +=== ident ===
 +Récupère le nom de l'utilisateur en contactant le serveur d'identification sur le poste client, et vérifie que cela correspond au nom d'utilisateur de base de données demandé. L'authentification Ident ne peut être utilisée que pour les connexions TCP/IP. Pour les connexions locales, elle sera remplacée par l'authentification peer.
 +
 +=== peer ===
 +Récupère le nom d'utilisateur identifié par le système d'exploitation du client et vérifie que cela correspond au nom d'utilisateur de base de données demandé. Peer ne peut être utilisée que pour les connexions locales. Voir la Section 20.3.6, « Peer Authentication » ci-dessous pour les details.
 +
 +=== ldap ===
 +Authentification par un serveur LDAP. Voir la Section 20.3.7, « Authentification LDAP » pour les détails.
 +
 +=== radius ===
 +Authentification par un serveur RADIUS. Voir Section 20.3.8, « Authentification RADIUS » pour les détails.
 +
 +=== cert ===
 +Authentification par certificat client SSL. Voir Section 20.3.9, « Authentification de certificat » pour les détails.
 +
 +=== pam ===
 +Authentification par les Pluggable Authentification Modules (PAM) fournis par le système d'exploitation. Voir la Section 20.3.10, « Authentification PAM » pour les détails.
 +
 +=== bsd ===
 +Authentification utilisant le service BSD Authentication fourni par le système d'exploitation. Voir Section 20.3.11, « Authentification BSD » pour plus de détails.
 +
 +
 +Redémarrez ou rechargez le serveur postgresql
 +  service postgresql restart
 +ou
 +  systemctl reload postgresql-9.6.service
 ==== utilisateur, bdd ==== ==== utilisateur, bdd ====
  
Ligne 79: Ligne 128:
 Se connecter en utilisant TCP/IP (psql utilise par défaut un socket UNIX). Se connecter en utilisant TCP/IP (psql utilise par défaut un socket UNIX).
  
-  $ psql -h localhost -p 5432 nom_de_la_bd+  $ psql -h localhost -p 5432 -U rickastley -W nom_de_la_bd
  
 Demander à psql de nous demander le mot de masse: Demander à psql de nous demander le mot de masse:
  
-  $ psql -W nom_de_la_bd+  $ psql -U rickastley -W nom_de_la_bd
   Password:   Password:
  
Ligne 105: Ligne 154:
  
 ===== Taille ===== ===== Taille =====
 +
 +Connaître la taille de toutes les bases et trier par la plus grosse.
 +<code sql>
 +SELECT pg_database.datname, 
 +pg_size_pretty(pg_database_size(pg_database.datname)) AS size , pg_database_size(pg_database.datname) as octets
 +FROM pg_database order by octets desc;
 +</code>
  
 Connaître la taille d'une base Connaître la taille d'une base
Ligne 149: Ligne 205:
      
 ===== Backup ===== ===== Backup =====
 +
 +
 +  # dump to single SQL file
 +  $ pg_dump -d mydb -n public -f mydb.sql
 +
 +  # dump to a custom format file
 +  $ pg_dump -d mydb -n public -Fc -f mydb.pgdmp
 +
 +
 +  # restoring from a SQL dump file, the simple version
 +  $ psql -d mydb_new < mydb.sql
 +
 +  # restoring from a SQL dump file, the recommended version
 +  $ PGOPTIONS='--client-min-messages=warning' psql -X -q -1 -v ON_ERROR_STOP=1 --pset pager=off -d mydb_new -f mydb.sql -L restore.log
 +
 +  # restoring from a dump written to a custom format file
 +  $ pg_restore -d mydb_new -v -1 mydb.pgdmp
 +
 +  # restore a single table from the dump
 +  $ pg_restore -d mydb_new --table=mytable -v -1 mydb.pgdmp
 +
 +  # restore a single function from the dump
 +  $ pg_restore -d mydb_new --function=myfunc -v -1 mydb.pgdmp
 +
 +
 +--- https://www.opsdash.com/blog/postgresql-backup-restore.html
 +
 +
 +Option de pg_restore
 +  * ''-a'' ne restaure que les données
 +  * ''-c'' efface les objets avant de les recréer (ajouter ''--if-exists'' pour éviter les messages d'erreurs en cas de suppression d'un objet qui n'existe pas
 +  * ''-C'' crée la database avec le nom renseigné dans ''-d''
 +  * ''-e'' exit on error
 +  * ''-I'' ne restaure que l'index spécifié
 +  * ''-P'' ne restaure que la fonction spécifiée
 +  * ''-T'' ne restaure que le trigger spécifié
 +  * ''-l'' liste les objets sauvegardés
 +  * ''-d'' spécifie la database
 +  * ''-n'' spécifie le schéma
 +  * ''-t'' spécifie la table
 +
 +
  
 Backup: (-Fc est un format compressé qui prend donc moins de place) Backup: (-Fc est un format compressé qui prend donc moins de place)
Ligne 172: Ligne 270:
   $ pg_dump --table products -U geekstuff article -f onlytable.sql   $ pg_dump --table products -U geekstuff article -f onlytable.sql
   $ pg_dump --table products -U geekstuff article -Fc -f onlytable.backup   $ pg_dump --table products -U geekstuff article -Fc -f onlytable.backup
 +
 +
 +Autre facon de faire un backup sous forme de fichier
 +
 +  pg_dump -Fd -f dbName_objects -j 10 -t 'thr_*' -U userName dbName
 +
 +Cette commande utilise ''-Fd'' qui est un format de backup sous forme de fichier\\
 +''-f'' spécifie non pas le nom du fichier de backup mais le répertoire\\
 +''-j 10'' spécifie 10 jobs simultanés pour faire le backup\\
 +''-t'' permet de définir un pattern pour ne sauvegarder que certaine table avec un prefixe ou autre
 +
 +L'inconvénient est que les fichiers ont le nom de l'id des objets, difficile donc de savoir ou est la table que l'on recherche.
 +
 +Utilisez la commande suivante pour voir la correspondance
 +
 +  pg_restore --list -Fd dbName_objects/ | grep 'TABLE DATA'
 +
 +in order to have each file not compressed (in raw SQL)
 +
 +  pg_dump --data-only --compress=0 --format=directory --file=dbName_objects --jobs=10 --table='thr_*' --username=userName -- dbname=dbName
 +  
 +Sinon un script bash qui boucle sur la liste des tables 
 +
 +<code bash>
 +#!/bin/bash
 +
 +# Config:
 +DB=rezopilotdatabase
 +U=postgres
 +# tablename searchpattern, if you want all tables enter "":
 +P=""
 +# directory to dump files without trailing slash:
 +DIR=~/psql_db_dump_dir
 +
 +mkdir -p $DIR
 +TABLES="$(psql -d $DB -U $U -t -c "SELECT table_name FROM 
 +information_schema.tables WHERE table_type='BASE TABLE' AND table_name 
 +LIKE '%$P%' ORDER BY table_name")"
 +for table in $TABLES; do
 +  echo backup $table ...
 +  pg_dump $DB -U $U -w -t $table > $DIR/$table.sql;
 +done;
 +echo done
 +</code>
 +
  
 ===== pg_dump to mysql ===== ===== pg_dump to mysql =====
Ligne 191: Ligne 334:
  
 Se connecter au serveur Se connecter au serveur
 +  su postgres
 +  psql
 +ou
   psql postgres   psql postgres
  
 Puis lancer la requête Puis lancer la requête
-<code sql>SELECT datname,usename,procpid,client_addr,waiting,query_start,current_query FROM pg_stat_activity;</code>+<code sql> 
 +Version 9.1 
 +SELECT datname,usename,application_name,procpid,client_addr,waiting,query_start,current_query FROM pg_stat_activity;</code> 
 + 
 +<code sql> 
 +Version 9.6 
 +SELECT datname,usename,application_name,pid,client_addr,state,query_start,query FROM pg_stat_activity;</code> 
 + 
 +<code sql> 
 +Version 11 
 +SELECT datname,usename,application_name,pid,client_addr,state,query_start,query FROM pg_stat_activity;</code> 
 + 
 +Repérer le PID qui vous intéresse puis terminez la requête 
 +  SELECT pg_cancel_backend(PID); 
 +ou tuez la 
 +  SELECT pg_terminate_backend(PID);
  
 ===== Requête sur un caractère spécial ===== ===== Requête sur un caractère spécial =====
Ligne 236: Ligne 397:
 </code> </code>
  
 +Alternative
 +
 +<code sql>
 +ALTER SEQUENCE meteo_id_seq RESTART WITH 1453
 +</code>
 ===== postgis ===== ===== postgis =====
  
Ligne 242: Ligne 408:
  
 Activation dans postgres, se connecter avec psql ou pgadmin et lancer la requête sql Activation dans postgres, se connecter avec psql ou pgadmin et lancer la requête sql
 +
 +  psql -d nom_bdd
  
 Enable PostGIS (includes raster) Enable PostGIS (includes raster)
Ligne 247: Ligne 415:
 Enable Topology Enable Topology
   CREATE EXTENSION postgis_topology;   CREATE EXTENSION postgis_topology;
 +
 +
 +Sinon à la main, retrouvez tous les fichiers sql à importer dans:
 +  /usr/pgsql-XX/share/contrib/postgis-2.X/
 +  psql -d madatabase -f ....../....sql
 +
 +Doc => http://postgis.net/docs/postgis_installation.html#idm559
  
  
 A tester => http://postgis.net/docs/performance_tips.html A tester => http://postgis.net/docs/performance_tips.html
 +
 +
 +https://gis.stackexchange.com/questions/43187/using-schema-other-than-public-in-postgis
 +  UPDATE pg_extension SET extrelocatable = TRUE WHERE extname = 'postgis';
 +
 +
 +Pour tester si postgis fonctionne et voir sa version
 +  select postgis_version()
  
 ===== Outils de backup ===== ===== Outils de backup =====
Ligne 258: Ligne 441:
   * http://www.pgbarman.org/   * http://www.pgbarman.org/
   * http://docs.pgbarman.org/release/2.3/   * http://docs.pgbarman.org/release/2.3/
 +
 +
 +===== Analiser une requete =====
 +
 +<code sql>
 +begin;
 +explain (analyze,buffers,timing)
 +delete from mydata where id='897b4dde-6a0d-4159-91e6-88e84519e6b6';
 +rollback;
 +</code>
 +
 +===== Point de vigilance =====
 +
 +La fonction SUM() peut retourner une valeur arrondie
 +
 +Dans ce cas, caster le champ en décimal 
 +  SUM( colonne::decimal )
  
linux/postgresql.1537799236.txt.gz · Dernière modification: 24-09-2018 16:27 de edmc73