Configuration MYSQL en ligne de commande

vendredi 13 décembre 2013

Voici une grande partie de socmmandes utiles pour configurer et utiliser un serveur de base de données MYSQL en ligne de commande.

Pour se connecter à la base de donnée:

prompt> mysql --user=user --password=password

Si pas de password défini par défaut après installation:

prompt> mysql --user=root

Pour définir un password au user root

prompt> mysqladmin -u root password password

Création du user:

mysql> CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';

Attention:Si l’utilisateur doit avoir accès depuis l’extérieur, il faut changer le host localhost en % (any)

Maintenant il faut définir les droits sur la base de donnée à l’utilisateur:

mysql> GRANT SELECT, INSERT,UPDATE, DELETE ON database.* TO user@'localhost'; 

Important: de définir les bons privilèges à la base de donnée.

Il est parfois nécessaire de n’accorder des droits à l’utilisateur que sur certaine(s) table(s):

mysql> GRANT SELECT, INSERT,UPDATE, DELETE ON database.table TO user@'localhost'; 

Importer une base de donnée:

prompt>  mysql --user=user --password=password database < /path/file.sql

Backuper la base de donnée:

mysqldump -u root -p database > /path/file.sql
Commandes utiles:

Voir les privilèges:

mysql> show GRANTS;

Voir les users: (être en root)

mysql> select * from mysql.user;

sélectionner la base de donnée

mysql> USE database_name;

Voir les bases de données

mysql> SHOW DATABASES;

Supprimer une database

mysql> DROP DATABASE database_name;

Créer une database

mysql> CREATE DATABASE database_name;

Voir les tables

mysql> SHOW TABLES;

Supprimer une table

mysql> DROP TABLE table_name;

Vider le contenu d’une table

mysql> TRUNCATE TABLE table_name;

Voir la taille de chaque tables d’une base de donnée db

SELECT 
 TABLE_NAME,
 CONCAT(ROUND(((DATA_LENGTH + INDEX_LENGTH - DATA_FREE) / 1024 / 1024), 2), 'Mo') AS TailleMo 
FROM information_schema.TABLES 
WHERE TABLE_SCHEMA = 'db'

Export csv du résultat d’une query

select * from table_name
where condition
INTO OUTFILE '/path/file.csv'
FIELDS TERMINATED BY ';'
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

Si vous obtenez une erreur, il y a un article qui peut vous aider à configurer mysql pour l’exécution de cette query.

Pour connaître le poids de toute vos tables par ordre décroissant du poids:

SELECT 
     table_schema as `Database`, 
     table_name AS `Table`, 
     round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB` 
FROM information_schema.TABLES 
ORDER BY (data_length + index_length) DESC;

Pour connaître le poids de vos database:

SELECT table_schema                                        "DB Name", 
   Round(Sum(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB" 
FROM   information_schema.tables 
GROUP  BY table_schema;