MySQL : console (client mysql)
Le client mysql est la console de MySQL. Les exemples utilisent la base boutique et l’utilisateur app, créés dans les pages suivantes.
Se connecter
Section intitulée « Se connecter »sudo mysql # root local (auth_socket), sans mot de passemysql -u app -p boutique # utilisateur, mot de passe demandé, base choisiemysql -u app -p -h 127.0.0.1 -P 3306 # via TCPmysql -u app -p -h serveur.exemple.com # serveur distantL’option -p seule demande le mot de passe de façon interactive : ne pas l’écrire dans la commande (-pmotdepasse), il resterait dans l’historique et la liste des processus.
Dans la console
Section intitulée « Dans la console »Les instructions SQL se terminent par ;. Les commandes du client commencent par \ ou s’écrivent en toutes lettres.
| Commande | Rôle |
|---|---|
SHOW DATABASES; |
Liste les bases |
USE boutique; |
Choisit la base de travail |
SHOW TABLES; |
Liste les tables de la base |
DESCRIBE clients; |
Structure d’une table (alias : DESC) |
SHOW CREATE TABLE clients\G |
Instruction de création complète |
SELECT DATABASE(); |
Base courante |
SELECT VERSION(); |
Version du serveur |
SELECT CURRENT_USER(); |
Compte utilisé |
STATUS; ou \s |
État de la connexion |
SOURCE fichier.sql; ou \. fichier.sql |
Exécute un fichier SQL |
\G à la fin d’une requête |
Affichage vertical (une ligne par champ) |
\c |
Annule la requête en cours de saisie |
\q, EXIT; ou Ctrl+d |
Quitte |
help; ou \h |
Aide |
SELECT * FROM clients LIMIT 2\GExécuter du SQL sans ouvrir la console
Section intitulée « Exécuter du SQL sans ouvrir la console »mysql -u app -p boutique -e "SELECT COUNT(*) FROM clients;" # une requêtemysql -u app -p boutique < script.sql # un fichiermysql -u app -p boutique -e "SELECT nom, ville FROM clients" > clients.txtFormat de sortie
Section intitulée « Format de sortie »mysql -u app -p boutique -e "SELECT nom, email FROM clients" --batch # séparé par des tabulationsmysql -u app -p boutique -e "SELECT nom FROM clients" --batch --skip-column-names # sans en-tête (pour un script)mysql -u app -p boutique -e "SELECT * FROM clients LIMIT 1" --vertical # affichage verticalmysql -u app -p boutique -e "SELECT * FROM clients" --table # tableau, même hors terminalPager : lire de longs résultats
Section intitulée « Pager : lire de longs résultats »pager less -S; -- défile horizontalement et verticalementSELECT * FROM commandes;nopager;Éviter de saisir le mot de passe
Section intitulée « Éviter de saisir le mot de passe »Fichier d’options ~/.my.cnf
Section intitulée « Fichier d’options ~/.my.cnf »cat > ~/.my.cnf <<'CONF'[client]user=apppassword=<mot-de-passe>CONFchmod 600 ~/.my.cnf« Login path » chiffré
Section intitulée « « Login path » chiffré »mysql_config_editor set --login-path=boutique --host=127.0.0.1 --user=app --passwordmysql --login-path=boutique boutiquemysql_config_editor print --all # liste (mots de passe masqués)Le mot de passe est enregistré obscurci dans ~/.mylogin.cnf, lisible seulement par l’utilisateur.
Personnaliser le client
Section intitulée « Personnaliser le client »Dans ~/.my.cnf, section [mysql] :
[mysql]prompt=\\u@\\h [\\d]>auto-rehashsafe-updatesprompt: affiche utilisateur, hôte et base courante.safe-updates: refuse lesUPDATEetDELETEsans clauseWHEREouLIMIT, un filet de sécurité utile.
Dépannage
Section intitulée « Dépannage »| Symptôme | Piste |
|---|---|
ERROR 1045 Access denied |
Mauvais mot de passe ou utilisateur ; pour root, utiliser sudo mysql |
ERROR 2002 Can't connect through socket |
Service arrêté, ou ajouter -h 127.0.0.1 pour passer par TCP |
ERROR 1049 Unknown database |
Vérifier le nom avec SHOW DATABASES; |
| Caractères accentués illisibles | Vérifier SHOW VARIABLES LIKE 'character_set%'; (utf8mb4 attendu) et le terminal en UTF-8 |
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Manuel du client : dev.mysql.com/doc/refman/8.4/en/mysql.html