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;