Aller au contenu

Quelques commandes MySQL de base

·550 mots·3 mins
Auteur
My name
A little bit about me

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.