
FAQ MySQLConsultez toutes les FAQ
Nombre d'auteurs : 15, nombre de questions : 155, derni�re mise � jour : 22 avril 2014 Ajouter une question
Cette FAQ a �t� con�ue � partir des questions fr�quemment pos�es sur le forum MySQL de Developpez.com. Elle ne pr�tend pas � �tre exhaustive et peut contenir des erreurs occasionnelles. Si vous relevez une coquille, n'h�sitez pas � nous le faire savoir.
Pour participer � cette FAQ, veuillez envoyer vos r�ponses sur le forum.
- Comment cr�er un compte utilisateur ?
- Les apostrophes sont-elles obligatoires autour du nom d'utilisateur et de son h�te ?
- Peut-on cr�er des comptes sans mot de passe ?
- Comment faire quand on a perdu le mot de passe root ?
- Comment modifier le mot de passe root ?
- Comment donner des droits � un utilisateur sur certaines tables/bases ?
- Quels sont les types de privil�ges (droits) que l'on peut accorder aux utilisateurs ?
- Comment limiter les ressources de certains utilisateurs (trop gourmands) ?
- Peut-on autoriser des connexions anonymes ?
- Qu'est-ce que la base [I]mysql[/I] ?
- Qu'est-ce que la table [I]host[/I] de la base [I]mysql[/I]
- A quel moment les modifications de privil�ges sont-elles appliqu�es aux utilisateurs ?
- Peut-on g�rer les utilisateurs par groupes ou par r�les ?
M�thode 1 : Avec CREATE USER.
Code sql : | S�lectionner tout |
1 2 3 4 5 | -- avec mot de passe CREATE USER toto@'192.168.%' IDENTIFIED BY 'tata' ; -- sans mot de passe CREATE USER toto@'192.168.%' ; |
M�thode 2 : En faisant directement un GRANT � un utilisateur encore inexistant.
Code sql : | S�lectionner tout |
1 2 | -- mot de passe obligatoire si l'utilisateur doit �tre cr�� GRANT SELECT, INSERT, UPDATE ON mabase.matable TO toto@'192.168.%' IDENTIFIED BY 'tata' ; |
Dans les requ�tes DCL* de MySQL, les comptes s'�crivent username@host. Le username et le host peuvent s'�crire entre apostrophes ou non. Les quatre �critures suivantes sont donc synonymes : toto@localhost, 'toto'@localhost, toto@'localhost', 'toto'@'localhost'. Les apostrophes sont obligatoires si le mot contient un caract�re sp�cial. Pour l'h�te, c'est notamment le cas des jokers ou du / pr�c�dant un masque. De la m�me mani�re, l'utilisateur anonyme s'�crit '' (deux apostrophes).
A l'inverse, si vous manipulez directement les donn�es de la base mysql sans passer par le DCL, user et host doivent �tre consid�r�s comme deux colonnes VARCHAR s�par�es. L'�criture username@host ne sera donc pas reconnue.
*Le Data Control Language est la sous-partie du SQL comprennant les commandes SQL relatives aux utilisateurs et � leurs privil�ges : GRANT, REVOKE, CREATE USER, RENAME USER et DROP USER.
MySQL accepte les comptes sans mot de passe. L'utilisateur devra alors �viter de saisir un mot de passe � l'authentification. Tenter de se connecter avec un mot de passe sur un compte sans mot de passe entra�ne un rejet.
Cr�er des comptes sans mot de passe est �videmment d�conseill� pour des raisons de s�curit�.
Avec MySQL 5.0, la proc�dure � suivre (sous les syst�mes d'exploitation Windows et Unix) est d�crite dans la documentation officielle (en fran�ais).
Avec MySQL 5.1, la proc�dure � suivre diff�re l�g�rement (sous les syst�mes d'exploitation Windows et Unix) et est d�crite dans la documentation officielle (en anglais).
Avec MySQL 5.5, la proc�dure � suivre (sous les syst�mes d'exploitation Windows et Unix) est d�crite dans la documentation officielle (en anglais).
Si le mot de passe n'a jamais �t� configur�, lancez la commande suivante dans un terminal :
Code sql : | S�lectionner tout |
mysqladmin -u root password MOT_DE_PASSE
Code sql : | S�lectionner tout |
mysqladmin -u root -p ANCIEN_MOT NOUVEAU_MOT
Les commandes GRANT et REVOKE permettent aux administrateurs de la base de donn�es de rajouter ou supprimer des utilisateurs et de leur donner ou de leur retirer des droits. Vous pouvez �tre tr�s pr�cis dans l'attribution de ces droits.
http://dev.mysql.com/doc/refman/5.0/fr/grant.html
Voici la liste des privil�ges telles qu'elle est fournie par le manuel de r�f�rence de la version 4.0.3.
- ALL [PRIVILEGES] Autorise tous les privil�ges simple, sans pouvoir les transmettre ("WITH GRANT OPTION" n'est pas inclus)
- ALTER Autorise l'usage de ALTER TABLE
- CREATE Autorise l'usage de CREATE TABLE
- CREATE TEMPORARY TABLES Autorise l'usage de CREATE TEMPORARY TABLE
- DELETE Autorise l'usage de DELETE
- DROP Autorise l'usage de DROP TABLE.
- EXECUTE Autorise l'utilisateur � �x�cuter des proc�dures stock�es (pour MySQL 5.0)
- FILE Autorise l'usage de SELECT ... INTO OUTFILE et LOAD DATA INFILE
- INDEX Autorise l'usage de of CREATE INDEX et DROP INDEX
- INSERT Autorise l'usage de INSERT
- LOCK TABLES Autorise l'usage de LOCK TABLES sur les tables o� le privil�ge SELECT est d�tenu
- PROCESS Autorise l'usage de SHOW FULL PROCESSLIST
- REFERENCES Pour les versions futures
- RELOAD Autorise l'usage de FLUSH
- REPLICATION CLIENT Donne le droit � l'utilisateur de demander o� sont les maitres/esclaves.
- REPLICATION SLAVE N�cessaire pour les esclaves de r�plication (pour lire les journaux binaires depuis les maitre).
- SELECT Autorise l'usage de SELECT
- SHOW DATABASES Autorise l'usage de SHOW DATABASES pour montrer toutes les bases
- SHUTDOWN Autorise l'usage de l'arr�t par mysqladmin
- SUPER Autorise une connexion (une seule fois) m�me si le nombre maximum de connexions est atteint, ainsi que l'usage de CHANGE MASTER, KILL processus,debugage par mysqladmin, PURGE MASTER LOGS et SET GLOBAL
- UPDATE Autorise l'usage de UPDATE
- USAGE Synonyme pour aucun privil�ges
Les privil�ges CREATE TEMPORARY TABLES, EXECUTE, LOCK TABLES, REPLICATION ..., SHOW DATABASES et SUPER existent � partir de la version 4.0.2. Pour utiliser ces nouveaux privil�ges apr�s une mise � jour, vous devez ex�cuter le script mysql_fix_privilege_table.
Dans les versions ant�rieures de MySQL, le privil�ge PROCESS donne les m�mes droits que le nouveau privil�ge SUPER.
Vous pouvez pr�ciser le nombre de requ�tes maximal, le nombre de mises � jour maximal et surtout le nombre de connexions maximal (le tout en nombre par heure).
Code sql : | S�lectionner tout |
1 2 3 | GRANT ... WITH MAX_QUERIES_PER_HOUR N1 MAX_UPDATES_PER_HOUR N2 MAX_CONNECTIONS_PER_HOUR N3; |
MySQL permet de cr�er des comptes sans username (et �ventuellement sans mot de passe non plus).
Code sql : | S�lectionner tout |
CREATE USER ''@'%' IDENTIFIED BY 'omnibus' ;
Du point de vue de la s�curit�, la cr�ation de comptes anonymes est �videmment fortement d�conseill�e.
La pr�sence d'un compte anonyme li� � un h�te sp�cifique peut �galement bloquer tous les utilisateurs dont le compte est li� � un h�te moins sp�cifique. Supposons par exemple que vous utilisiez habituellement le compte toto@'%'. L'administrateur d�cide de cr�er un compte anonyme ouvert � tout le r�seau local, soit ''@'192.168.%'. A votre prochaine connexion depuis un poste en 192.168, MySQL vous identifiera comme ''@'192.168.%'. En effet, '' est moins sp�cifique que 'toto', mais 192.168.% est plus sp�cifique que % tout court ; comme il accorde la priorit� � la sp�cificit� de l'h�te, MySQL pr�f�re un compte anonyme li� � un h�te sp�cifique qu'un compte nomm� li� � un h�te g�n�rique. Au final, votre tentative de connexion sera refus�e pour mauvais mot de passe (� moins bien s�r que vous n'ayez le m�me mot de passe que ''@'192.168.%').
Un serveur MySQL comprend toujours deux bases de donn�es syst�me : information_schema, qui contient les vues syst�me du catalogue (cf le tutoriel Le catalogue MySQL), et mysql, qui contient les comptes utilisateur et leurs privil�ges. Les principales tables de cette base sont user (comptes, mot de passe et privil�ges globaux), db (privil�ges accord�s pour une base de donn�es enti�re), tables_priv (privil�ges accord�s table par table) et column_priv (privil�ges accord�s colonne par colonne). Il est possible d'administrer les utilisateurs en modifiant les donn�es de la base mysql. Comme le contenu de cette base est int�gralement charg� en m�moire au d�marrage du serveur, il sera n�cessaire de le recharger avec un FLUSH PRIVILEGES. A l'inverse, le FLUSH n'est pas n�cessaire avec les ordres DCL (GRANT, REVOKE, etc.) qui impactent automatiquement la copie en m�moire vive de la base mysql.
Les privil�ges accord�s au niveau base de donn�es peuvent �tre conditionn�s � l'h�te de l'utilisateur. Pour cela, vous devez manipuler directement la base mysql. Il faut indiquer '' (cha�ne vide) dans la colonne host de la table db, ce qui signifie "selon la table host". Dans la colonne host de la table host, vous placez les h�tes autoris�s pour la db en question, avec leurs privil�ges. Pour plus de d�tails : http://dev.mysql.com/doc/refman/5.0/...st-access.html.
Les modifications au niveau des objets de base de donn�es (tables, colonnes, etc.) prennent effet � la prochaine requ�te de l'utilisateur. Les modifications au niveau base de donn�es prennent effet au prochain changement de base de donn�es courante (USE) de l'utilisateur. Les modifications au niveau global prennent effet � la prochaine connexion.
Non, MySQL n'impl�mente toujours pas cette gestion des comptes par groupe et r�les.
Cette gestion ne semble pas �tre une priorit� pour les d�veloppeurs de MySQL.
Son impl�mentation n'est d'ailleurs pas non plus pr�vue pour MySQL 6.
Proposer une nouvelle r�ponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plut�t sur le forum de la rubrique pour �aLes sources pr�sent�es sur cette page sont libres de droits et vous pouvez les utiliser � votre convenance. Par contre, la page de pr�sentation constitue une �uvre intellectuelle prot�g�e par les droits d'auteur. Copyright � 2025 Developpez Developpez LLC. Tous droits r�serv�s Developpez LLC. Aucune reproduction, m�me partielle, ne peut �tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'� trois ans de prison et jusqu'� 300 000 � de dommages et int�r�ts.