Version de mysql
linux:~# mysql --version mysql Ver 14.12 Distrib 5.0.51a, for debian-linux-gnu (i486) using readline 5.2
Connexion au serveur mysql
linux:~# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 28 Server version: 5.0.51a-24+lenny4 (Debian) Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
Création d'un utilisateur Les droits peuvent être sur les commandes (create, delete, update, ...) et sur des parties de la base (base.nomtable)
mysql>grant all on mabase.*
-> id int not null auto_increment primary key, -> to user1@machine.com ->identified by 'password';
Changement du mot de passe
mysql>grant usage on *.*
-> to user1@machine.com -> iden ->identified by 'password2';
Affichage des droits
mysql>show grants for user1@machine.com;
Suppression d'un utilisateur
mysql>drop user user1@machine.com;
Sortir d'une commande en cours sans l'exécuter : \c
mysql> insert into test_adresse -> set\c
Afficher les bases de donnée
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+ 2 rows in set (0.00 sec)
Créer une base de donnée
mysql> create database mabase; Query OK, 1 row affected (0.00 sec)
Supprimer une base de donnée
mysql> drop database mabase; Query OK, 0 rows affected (0.01 sec)
Utiliser une base de donnée
mysql> use mabase; Database changed
Créer une table
mysql> create table test_adresse ( -> id int not null auto_increment primary key, -> nom text, -> prenom text, -> adresse text, -> date_entree date not null -> ) default character set utf8; Query OK, 0 rows affected (0.01 sec)
Ajouter une colonne à une table
mysql>alter table test_adresse add column pays varchar(255);
Suppression d'une colonne
mysql>alter table test_adresse drop column pays;
Afficher la table
mysql> show tables; +------------------+ | Tables_in_mabase | +------------------+ | test_adresse | +------------------+ 1 row in set (0.00 sec)
Afficher la composition de la table
mysql> describe test_adresse; +-------------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+---------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | nom | text | YES | | NULL | | | prenom | text | YES | | NULL | | | adresse | text | YES | | NULL | | | date_entree | date | NO | | NULL | | +-------------+---------+------+-----+---------+----------------+ 5 rows in set (0.00 sec)
Suppression d'une table
mysql> drop table test_adresse; Query OK, 0 rows affected (0.00 sec)
Ajout de donnée
mysql> insert into test_adresse set -> nom = "west", -> prenom = "james", -> adresse = "amerique", -> date_entree = "2010-12-28";Query OK, 1 row affected (0.00 sec)
ou bien
mysql> insert into test_adresse -> (nom, prenom, adresse, date_entree) values -> ("don", "bob", "france", "2010-12-29"); Query OK, 1 row affected (0.00 sec)
Modification
mysql> update test_adresse set -> nom = "weste" -> where nom = "west"; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0
Suppression
mysql> delete from test_adresse where -> nom ="weste"; Query OK, 1 row affected (0.00 sec)
Requête
mysql> select * from test_adresse; +----+------+--------+----------+-------------+ | id | nom | prenom | adresse | date_entree | +----+------+--------+----------+-------------+ | 1 | west | james | amerique | 2010-12-28 | | 2 | don | bob | france | 2010-12-29 | +----+------+--------+----------+-------------+ 2 rows in set (0.00 sec)
Requête avec tri
mysql>select nom,prenom from test_adresse order by nom;
mysql>select nom,prenom from test_adresse order by nom DESC;
Requête avec limite (affichage des 10 premiers résultats
mysql>select nom,prenom from test_adresse limit 10;
Requête avec limite (5 prochaines à partir de la 11ème entrée)
mysql>select nom,prenom from test_adresse limit 10,5;
Requête avec alias (colonne ou table)
mysql>select nom,prenom from test_adresse as adresse order by nom;
mysql>select nom,prenom as exemple from test_adresse order by nom;Requête avec condition
mysql> select nom, prenom from test_adresse where nom like "w%"; +------+--------+ | nom | prenom | +------+--------+ | west | james | +------+--------+ 1 row in set (0.00 sec)
Requête sans doublon
mysql> select distinct nom, prenom from test_adresse;Compteur
mysql>select count(*) from test_adresse;Requête avec jointure
mysql>select nom, prenom from table1 inner join table2 on table1.id = table2.id;Requête avec jointure à gauche (tous les enregistrements de la table de gauche et ceux de la table de droite qui correspondent)
mysql>select nom, prenom from table1 left join table2 on table1.id = table2.id;Regroupement
mysql> select nom, prenom from test_adresse where prenom=paul group by nom;Regroupement bis : s'applique après le résultat de la requête
mysql> select nom, prenom from test_adresse where prenom=paul having nom=dupont;
Création d'un index
mysql>create index idnom on test_adresse(nom);
Commande pour vérouiller/déverouiller une table (write ou read)
mysql>lock tables nomtable write;
mysql>unlock tables nomtable write;
Administration:
Sauvegarde d'une base de donnée:
mysqldump -u root -p password --all-databases > backup.sql
Restauration d'une base de donnée:
mysqldump -u root -p password < backup.sql
En cas de mot de passe root oublié
- Eteindre le serveur
- Relancer avec la commande suivante: mysql_safe -skip-grant-table
- Choisir un autre mot de passe: update mysql.user set password=password("motdepasse") where user='root';
- Déconnexion et recharge de la base: mysqladmin flush-privileges
Recherche d'erreur sur une table
myisamchk /usr/local/mysql/data/nombase/nomtable
Puis de l'index de la table:
myisamchk /usr/local/mysql/data/nombase/nomtable.MYI
Réparation
myisamchk --recover --quick /chemin/nomtable
myisamchk --recover /chemin/nomtable
myisamchk --safe-recover /chemin/nomtable
Aucun commentaire:
Enregistrer un commentaire