Une compilation de documentations   { en , fr }

Correspondance de quelques commandes MySQL et PostgreSQL

Créé en:
Auteur:
Xavier Béguin

Se connecter avec le client en ligne de commande

MySQL

mysql -h host -u myuser -P dbname
mysql -u myuser -P dbname

dbname peut être ignoré, et on devra alors choisir une base depuis l'environnement du client.

Si l'option -h n'est pas utilisée pour préciser un nom de machine, la connexion se fera par socket unix au serveur local (comme si localhost était précisé).

PostgreSQL

psql -h host -U myuser -d dbname
psql -h host dbname
psql dbname

L'utilisation d'un mot de passe n'est pas systématique puisqu'il dépend de la méthode d'authentification qui sera utilisée, mais si celui-ci était nécessaire, il sera toujours demandé. Il n'est donc pas nécessaire de fournir une option pour demander la saisie d'un mot de passe.

Là aussi, si -h n'est pas utilisée pour préciser un nom de machine, la connexion se fera au serveur local.

Aide en ligne

MySQL

Pour obtenir de l'aide en ligne concernant les commandes SQL ou les commandes spécifiques au client mysql :

help commande

Pour afficher quelques commandes de configuration du client.

\?

PostgreSQL

Pour l'aide concernant les commandes SQL uniquement.

\help commandesql

Pour afficher les commandes spécifiques du client (très utile).

\?

Changer la base de données courante

MySQL

use dbname;

PostgreSQL

\c dbname

Afficher la définition d'une table

MySQL

describe mytable;

ou, en version raccourcie :

desc mytable;

PostgreSQL

\d mytable

Voir la liste des utilisateurs

MySQL

select user from mysql.user;

PostgreSQL

\u

Voir la liste des bases de données

MySQL

show databases;

PostgreSQL

\l

Voir la liste des tables de la base de données courante

MySQL

show tables;

PostgreSQL

\dt

Voir la liste des privilèges sur les tables

MySQL

On peut voir tous les droits accordés à un utilisateur avec la commande :

show grants for 'user'@'machine.domaine.dpn';

Autre solution pour voir les droits sur une table :

show full columns from table;

PostgreSQL

Pour voir ses propres droits :

\dp $user

Pour voir les droits de tous les utilisateurs :

\dp

Comme pour les autres commandes, seuls les objets des schémas visibles sont affichés. Utiliser la notation monschema.table pour désigner un objet d'un schéma non inclus dans le search_path.

Notez que le propriétaire d'un objet ne figure pas dans la liste si les droits n'ont pas été modifiés (le propriétaire a tous les droits sur l'objet).

La commande \z est un alias de \dp.

Changer le mot de passe d'un utilisateur

MySQL

set password for myuser = password('mdpbidon');

PostgreSQL

alter user myuser with password 'mdpbidon';

Exportation/sauvegarde de la base dans des fichiers.

MySQL

mysqldump -u myuser -h host dbname > sauvegarde_dbname.sql

Quelques options utiles de la commande mysqldump :

  • -A, ou --all-databases (au lieu de dbname): pour sauvegarder toutes les bases en une fois
  • -B (au lieu de dbname): exporter ces bases (liste séparée par des espaces)
  • -c : utiliser des instructions INSERT complètes (avec les noms des colonnes)
  • -n : n'exporte pas les instructions de création des bases de données
  • -t : n'exporte aucune instruction de création
  • -t : n'exporte pas les CREATE TABLE (uniquement les données)
  • -d : n'exporte pas les données des tables (seulement les CREATE TABLE)

Pour la restauration des données, redirigez le fichier texte contenant les instructions vers le client mysql :

mysql -u myuser dbname < sauvegarde_dbname.sql

L'option -o de mysql permet d'ignorer les requêtes concernant d'autres bases que celle mentionnée en argument. Ça peut être utile lors d'une telle commande de restauration si on ne dispose que d'un fichier contenant la sauvegarde de toutes les bases de données et qu'on ne veut en restaurer qu'une seule.

PostgreSQL

pg_dump -D -U myuser -h host dbname > sauvegarde_dbname.sql

Quelques options utiles de la commande pg_dump :

  • -D : utiliser des INSERT avec colonnes plutôt que des COPY.
  • -t mytable : uniquement la table précisée
  • -a : seulement les données
  • -s : seulement les définitions des objets, pas les données
  • -s : n'exporte que les définitions d'objets (pas les données)
  • -a : n'exporte que les données (pas les définitions)

Contrairement à mysqldump, pg_dump peut exporter dans des formats autres qu'un fichier texte, qui pourront être manipulés par pg_restore. Pour choisir le format de sortie de pg_dump, on peut utiliser son option --format=format ou -F format :

  • --format=format, ou -F format: précise le format de la sortie. format peut valoir :
    • plain ou p: texte (format par défaut)
    • custom ou c: un format adapté à pg_restore, qui permet de réordonner des données et définitions d'objets. Il est compressé par défaut.
    • tar: génère une archive tar adaptée à pg_restore, permettant de réordonner ou d'exclure des données et définitions d'objets, ainsi que de limiter les données à leur restauration.

Pour la restauration des données depuis un format texte (hors utilisation de pg_restore), redirigez simplement le fichier texte contenant les instructions vers le client psql :

psql -U myuser dbname < sauvegarde_dbname.sql

Quitter l'environnement du client

Pour quitter l'environnement interactif des clients mysql et psql, le simple ^D (ctrl+d) fonctionne, comme dans la plupart des environnement, mais des commandes spécifiques existent :

MySQL

Pour sortir de l'environnement de mysql, vous pouvez utilisez une de ces commandes :

\q
quit
^D

PostgreSQL

Pour sortir de l'environnement de psql, utilisez une de ces commandes :

\q
^D