Outils pour utilisateurs

Outils du site


informatique:linux:mysql_-_configurer_le_mot_de_passe

Configurer les mots de passe

Les mots de passe peuvent être assigné en ligne de commande avec l'utilitaire mysqladmin :

shell> mysqladmin -u user_name -h host_name password "newpwd"

Le compte qui est remis à zéro par cette commande est celui pour lequel une ligne de la table user qui correspond à la valeur user_name dans la colonne User et l'hôte client d'où vous vous connectez dans la colonne Host. Un autre moyen pour assigner un mot de passe à un compte est d'utiliser la commande SET PASSWORD :

mysql> SET PASSWORD FOR 'jeffrey'@'%' = PASSWORD('biscuit');

Seuls les utilisateurs root ayant des accès en écriture à la base mysql peuvent changer les mots de passe des autres utilisateurs. Si vous n'êtes pas connectés en tant qu'utilisateur anonyme, vous pouvez modifier votre propre mot de passe en omettant la clause FOR :

mysql> SET PASSWORD = PASSWORD('biscuit');

Vous pouvez aussi utiliser la commande GRANT USAGE au niveau global (ON *.*) pour assigner un mot de passe sans affecter les droits du compte :

mysql> GRANT USAGE ON *.* TO 'jeffrey'@'%' IDENTIFIED BY 'biscuit';

Même s'il est généralement préférable d'assigner un mot de passe en utilisant une des méthodes précédentes, vous pouvez aussi modifier la table user directement :

Pour établir un mot de passe lors de la création d'un compte, fournissez une valeur à la colonne Password :

shell> mysql -u root mysql
mysql> INSERT INTO user (Host,User,Password)
    -> VALUES('%','jeffrey','biscuit');
mysql> FLUSH PRIVILEGES;

Pour changer le mot de passe d'un compte existant, utilisez la commande UPDATE pour modifier la valeur de la colonne Password :

shell> mysql -u root mysql
mysql> UPDATE user SET Password = PASSWORD('bagel')
    -> WHERE Host = '%' AND User = 'francis';
mysql> FLUSH PRIVILEGES;

Lorsque vous assignez un mot de passe à un compte avec SET PASSWORD, INSERT, ou UPDATE, vous devez utiliser la fonction PASSWORD() pour le chiffrer. La seule exception est que vous n'avez pas besoin d'utiliser PASSWORD() si le mot de passe est vide. PASSWORD() est nécessaire car la table user stocke les mots de passe sous forme chiffrée, et non en texte clair. Si vous oubliez cela, vous risquez d'avoir des mots de passe de la forme :

shell> mysql -u root mysql
mysql> INSERT INTO user (Host,User,Password)
    -> VALUES('%','jeffrey','biscuit');
mysql> FLUSH PRIVILEGES;

Le résultat est que la valeur 'biscuit' est stockée dans la colonne de mot de passe de la table user. Lorsque l'utilisateur jeffrey tente de se connecter au serveur avec ce mot de passe, le client mysql compare ce mot de passe chiffré avec sa version en clair stockée dans la table user. Cependant, la version stockée est la valeur littérale de 'biscuit', et la comparaison échoue, le serveur rejette la connexion :

shell> mysql -u jeffrey -pbiscuit test
Access denied

Si vous modifiez les mots de passe en utilisant la commande GRANT … IDENTIFIED BY ou la commande mysqladmin password, la fonction PASSWORD() n'est pas nécessaire. Ces commandes assureront le chiffrement de votre mot de passe pour vous, ce qui vous permet de spécifier le mot de passe de 'biscuit' comme ceci :

<note> PASSWORD() n'effectue pas le chiffrement du mot de passe de la même façon qu'Unix. See Section 5.6.1, « Nom d'utilisateurs MySQL et mots de passe ».</note>

<note tip>Source Source 1,Source 2,Source 3 </note>

informatique/linux/mysql_-_configurer_le_mot_de_passe.txt · Dernière modification : 2022/04/10 17:26 de 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki