Quelques commandes MySQL de base

Publié le 10/09/2015

Connexion au shell

Pour se connecter sur le shell MySQL : $ mysql -u root -p. Des fois que vous ayez oublié les utilisateurs définis dans la DB:

	mysql> select host, user, password from mysql.user;
	+-----------+------------------+-------------------------------------------+
	| host      | user             | password                                  |
	+-----------+------------------+-------------------------------------------+
	| localhost | root             | *AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA |
	| localhost | wordpressuser    | *BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB |
	| 127.0.0.1 | root             | *CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC |
	| ::1       | root             | *CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC |
	| localhost | debian-sys-maint | *DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD |
	+-----------+------------------+-------------------------------------------+
	5 rows in set (0.17 sec)

Actions sur les tables

Pour lister les bases de données enregistrées:

	mysql> show databases;
	+--------------------+
	| Database           |
	+--------------------+
	| information_schema |
	| xxx           |
	| mysql              |
	| performance_schema |
	+--------------------+
	4 rows in set (0.05 sec)

Et pour supprimer une des bases, c'est grâce à:

	mysql> drop database if exists wordpress;
	Query OK, 0 rows affected (0.04 sec)

(on peut laisser tomber le if exists, mais cela jettera une erreur si la db n'existe pas.

Il est aussi possible de lister les tables appartenant Ă  une base en particulier:

	mysql> show tables from reader;
	+--------------------------+
	| Tables_in_reader         |
	+--------------------------+
	| access_keys              |
	| archived_feeds           |
	| cat_counters_cache       |
	| counters_cache           |
	| enclosures               |
	| entries                  |
	| entry_comments           |
	| error_log                |
	| feed_categories          |
	| feedbrowser_cache        |
	| feeds                    |
	| ...					   |
	+--------------------------+
	31 rows in set (0.00 sec)

Dump et restore

Pour dumper les données d'une base en particulier, utilisez le petit script ci-dessous:

NOW=$(date +"%Y-%m-%d-%H%M")

DB_USER=""
DB_PASS=""
DB_NAME=""
DB_FILE="$DB_NAME.db.$NOW.sql"
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME > $DB_FILE

Et pour restaurer les données vers une base, le principe est de rediriger le contenu d'un fichier vers la connexion de la base de données. Ce qu'on a fait juste au dessus, pour le dump, c'est d'utiliser une redirection vers un fichier >. Ici, c'est l'inverse: <.

mysql -u $DB_USER -p$DB_PASS $DB_NAME < fichier.sql

Création d'un nouvel utilisateur

Commencez par lancer mysql -u root -p pour entrer dans le shell MySQL. La commande ci-dessous va créer un nouvel utilisateur, newuser, dont le mot de passe sera password. Le champ localhost peut rester tel quel.

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

Une fois que le nouvel utilisateur est créé, il faut encore lui accorder des privilèges. Pour cela, choisissez la base sur laquelle vous comptez lui donner un accès. Si elle n'existe pas encore, créez la:

CREATE DATABASE IF NOT EXISTS database_name;

Et finalement, on accorde les privilèges à l'utilisateur newuser sur la base database_name:

GRANT ALL PRIVILEGES ON database_name.* TO 'newuser'@'localhost';
FLUSH PRIVILEGES;

Permissions

Plutôt que d'accorder un petit Grant All Privileges, il y a plusieurs niveaux de privilèges:

  • ALL PRIVILEGES - attribue l'ensemble des privilèges ci-dessous Ă  l'utilisateur, pour une base de donnĂ©es spĂ©cifiĂ©e. Si aucune base de donnĂ©es n'est spĂ©cifiĂ©e, les privilèges seront attribuĂ©s au niveau du système.
  • CREATE - permet Ă  l'utilisateur de crĂ©er de nouvelles tables ou bases de donnĂ©es
  • DROP - autorise la suppression de tables ou de bases de donnĂ©es
  • DELETE - autorise la suppression d'enregistrements dans une table
  • INSERT - autorise l'insertion d'enregistrements dans une table
  • SELECT - autorise la sĂ©lection de donnĂ©es prĂ©sentes dans la base
  • UPDATE - autorise la mise Ă  jour d'enregistrements prĂ©sents dans une table
  • GRANT OPTION - autorise la gestion des privilèges pour d'autres utilisateurs.