Créer un utilisateur Mysql, ainsi que sa propre base de donnée
But : Voici comment créer un utilisateur mysql disposant de droits limités à sa propre base de donnée.
Tutorial par l'exemple :
Si nous souhaitons ajouter l'utilisateur eric , avec un mot de passe 'motdepasse' (sans les guillemets) la première partie à indiquer à Mysql (nécessite un utilisateur connecté possédant des droits d'administrateurs) :
Code Mysql |
|
CREATE USER 'eric'@'%' IDENTIFIED BY 'motdepasse';
|
Le signe '%' signifie que eric pourra se connecter de n'importe quel serveur. Il aurait parfaitement été possible d'y mettre 'localhost', comme très souvent appliqué sur des serveurs d'hébergement.
'motdepasse' (sans les guillemets) est ici le mot de passe de notre cher eric.
Ne pas oublier la ; (point virgule) de fin pour indiquer à mysql la fin de notre commande.
Par php (nécessite un utilisateur connecté possédant des droits d'administrateurs) :
Code Php |
|
mysql_query("CREATE USER 'eric'@'%' IDENTIFIED BY 'motdepasse'");
?>
|
Régler ses privilèges :
Certains paramètres optionnels tels que WITH MAX_QUERIES_PER_HOUR x MAX_CONNECTIONS_PER_HOUR x MAX_UPDATES_PER_HOUR x MAX_USER_CONNECTIONS x peuvent être ajoutés également, où x est un nombre naturel.
Code Mysql |
|
GRANT USAGE ON * . * TO 'eric'@'%' IDENTIFIED BY 'motdepasse';
|
Code Php |
|
mysql_query("GRANT USAGE ON * . * TO 'eric'@'%' IDENTIFIED BY 'motdepasse';"); # Note : Le ; n'est pas nécessaire dans la requête mysql . En effet, php l'ajoute tout seul.
?>
|
Création d'une base de donnée mysql :
CREATE DATABASE IF NOT EXISTS `eric` ;
Comme une simple traduction l'explique, ceci créé une database, si elle n'est pas déja présente (afin d'éviter une erreur) du nom de 'eric'
Code Mysql |
|
CREATE DATABASE IF NOT EXISTS `eric` ;
|
Code Php |
|
mysql_query("CREATE DATABASE IF NOT EXISTS `eric`"); # Note : Le ; n'est pas nécessaire dans la requête mysql. En effet, php l'ajoute t out seul.
?>
|
Maintenant, régler les droits pour cette base, en ne permettant à 'eric' d'agir que sur cette base de donnée.
Code Mysql |
|
GRANT ALL PRIVILEGES ON `eric` . * TO 'eric'@'%';
|
Code Php |
|
mysql_query("GRANT ALL PRIVILEGES ON `eric` . * TO 'eric'@'%'");
?>
|
Au final, à la question comment ajouter un utilisateur mysql ainsi que sa base de donnée, le code complet est :
Code Mysql |
|
CREATE USER 'eric'@'%' IDENTIFIED BY '****************';
GRANT USAGE ON * . * TO 'eric'@'%' IDENTIFIED BY '****************' ;
CREATE DATABASE IF NOT EXISTS `eric` ;
GRANT ALL PRIVILEGES ON `eric` . * TO 'eric'@'%';
|
Pour php :
Code Php |
|
$pseudo = eric ;
$nombase = mabase;
$motdepasse = 'abcd';
$sql = "CREATE USER '$pseudo'@'%' IDENTIFIED BY '$motdepasse';
GRANT USAGE ON * . * TO 'eric'@'%' IDENTIFIED BY '$motdepasse' ;
CREATE DATABASE IF NOT EXISTS `$nombase` ;
GRANT ALL PRIVILEGES ON `$nombase` . * TO '$pseudo'@'%';"
mysql_query($sql);
?>
|