Dans le terminal :

Passer en ligne de commande MySql :

mysql -u root -p

Enter password: -> encoder le mot de passe défini lors de l'installation
Voir toutes les bases de données :

show databases;

Toutes les commandes se terminent par ";"

Créer une base de données encodée en UTF-8 :

create database workshop_20120607 default character set utf8 default collate utf8_general_ci;

L'option collate détermine la méthode de comparaison, donc le tri
_ci = case insensitive
Si une table est importée sans spécification, elle sera donc en utf8 sinon c'est l'encodage spécifié qui sera utilisé.

A ce stade seul root peut accéder à cette base de données hors root à tous les privilèges sur toutes les bases de données

Créons un utilisateur qui a tous les droits sur cette base :

grant all privileges on workshop_20120607.* to workshop_usermax@localhost identified by "motdepasse";

all privileges = tous les droits
workshop_20120607.* = toutes les tables de workshop_20120607
workshop_usermax = mon utilisateur
localhost = n'a accès que depuis la machine où est hébergé MySql
motdepasse = mon mot de passe

Créer un utilisateur avec le droit de select uniquement :

grant select on workshop_20120607.* to workshop_usermin@localhost identified by "motdepasse";

Quelques infos sur nos users.
Au préalable, sélectionner la base mysql :

use mysql;

Afficher les users :

select user,host from user;

Afficher les users par base :

select user,db,host from db;

Quitter mysql :

exit;

Se connecter avec le user créé pour les select :

mysql -u workshop_usermin -p

Sélectionner la base :

use workshop_20120607;

Créer une table :

create table test (id tinyint(4), nom varchar(100));

CREATE command denied to user (et c'est normal !)

exit;

Se connecter avec le user qui a tous les droits :

mysql -u workshop_usermax -p

Sélectionner la base :

use workshop_20120607;

Créer une table :

create table test (id tinyint(4), nom varchar(100));

Voir la table créée :

show tables;

Insérer une valeur :

insert into test (id,nom) values (1,"Nom 1");

Voir le résultat :

select * from test;

Si vous utilisez le user workshop_usermin vous pourrez uniquement réaliser des select (idéal pour une application web de consultation)

Supprimer l'enregistrement dont l'id=1 :

delete from test where id=1;

Soit un fichier contenant des commandes sql (workshop_input.sql) :

insert into test (id,nom) values (1,"Nom 1");
insert into test (id,nom) values (2,"Nom 2");
insert into test (id,nom) values (3,"Nom 3");
insert into test (id,nom) values (4,"Nom 4");


Insérer un fichier de commande sql :

mysql workshop_20120607 -u workshop_usermax -p < chemin_du_fichier/workshop_input.sql

Voir les propriétés des champs de la table "test" :

show columns from test;

Modifier le type de champ :

alter table test modify nom varchar(50);

Ajouter un champ "prenom" à la table "test" :

alter table test add prenom varchar(100);

Supprimer le champ "prenom" de la table "test" :

alter table test drop prenom;

Supprimer la table "test" :

drop table test;

Comme root !
Supprimer la base de données "workshop_20120607" :

drop database workshop_20120607;

Supprimer les users workshop_usermin et workshop_usermax :

drop user 'workshop_usermin'@'localhost';
drop user 'workshop_usermax'@'localhost';

Vérifions :

select user,db,host from db;
select user,host from user;

L'historique des commandes mysql est stocké dans le fichier :

~/.mysql_history