lundi 28 novembre 2011

Mémo mysql


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

Comment ajouter une route statique sur une distribution Linux Ubuntu

Pour ajouter une route statique au démarrage d'Ubuntu, voici le fichier à modifier. Dans l'exemple on ajoute une route pour joindre ...