-
SQL > requêtes en lignes de commandes BASH
SYNTAXE GÉNÉRALE
mysql -unom -pmdp -e "requête;"
exemple :
mysql -umoi -ptoto -e "create database nom_base; create user 'moi'@'localhost'; grant all privileges on nom_base.* to 'moi'@'localhost' identified by 'mdp'";
NOTE : les commandes SQL doivent être séparées par un "
;"CONNEXION A UN SERVEUR SQL
Serveur local
mysql -u utilisateur -p nom_base
-u utilisateur: utilisateur MySQL (pas Unix)
-p: mot de passe MySQL (pas Unix). Ne pas taper le mot de passe directement dans la ligne de commande.nom_base: si on veut travailler directement sur une base. Pas obligatoire.exemple :
mysql -u toto -p ma_base Enter password: ********
Serveur distant
mysql -h machine -u utilisateur -p nom_base
-h machine: machine hôte
-u utilisateur: utilisateur MySQL (pas Unix)
-p: mot de passe MySQL (pas Unix)exemple :
mysql -h ma_machine -u toto -p ma_base Enter password: ********
SPÉCIFIER / CHANGER DE BASE DE DONNÉES
mysql> USE ma_base;
ou directement lors de la connexion:
mysql -h ma_machine -u moi -p ma_base
TRAITEMENT EN LOT
Importation
mysql -u moi -p ma_base < test.mysql
test.mysqlfichier contenant les requêtes SQL.Importer une SEULE base dans un fichier en contenant plusieurs :
mysql --one-database ma_base < fichier.sql
Note: si la table existe déjà, il faut la tuer avec "
DROP TABLE if exists" (sinon utiliserALTERpour modifier sa structure)DROP TABLE if exists ma_table
Modifier le mot de passe administrateur
dpkg-reconfigure mysql-server-5.1Deux écrans de configuration apparaitront permettant de choisir puis de confirmer le mot de passe.
Lister l’ensemble des bases de données du serveur
SHOW DATABASES;
Pour utiliser directement du SQL en utilisant l’option -e (execute) de la sorte :
mysql -u root -p -e "show databases;"
Pour l’utilisation simple dans un script on utilisera les options -B (qui enlève le formatage en colonne) et -s (qui enlève l’entête de colone). Ainsi la commande :
mysql -u root --password=mot_de_passe_root -e "show databases;" -B -s
Ajouter des utilisateurs MySQL
mysql -u root --password=mot_de_passe -e "GRANT ALL PRIVILEGES ON *.* TO 'nv_user'@'localhost' IDENTIFIED BY 'nv_user_mot_de_passe' WITH GRANT OPTION";
Pour sortir de la commande Mysql, il suffit de taper exit et de valider.
Documentation officielle de MySQL concernant la création d’utilisateurs.
SÉCURISER L’ENVOI DU MOT DE PASSE
mysql_config_editor set --login-path=local --host=localhost --user=toto --password
Un prompt va demander d’entrer le mot de passe de toto.
Le fichier créé se trouve à
/home/toto/.mylogin.cnfPuis remplacer le code dans les scripts :
mysqldump -u toto -pMotDePasse ma_base | gzip > db_backup.tar.gz
par ce code :
mysqldump --login-path=local ma_base | gzip > db_backup.tar.gz
Importer un .tar.gz dans mysql
tar -xzOf your_db_dump.sql.tar>.gz | mysql -u USERNAME -pPASSWORD your_database