J'essaie de faire en sorte que le client mysql se connecte à un serveur mysql sans exiger que le mot de passe soit donné de manière interactive. Mesures prises:
1) Créez d'abord un fichier mylogin.cnf
$ mysql_config_editor set --user=<user> --password --Host=<Host>
Enter password:
2) Fichier créé avec succès:
$ ls -la .mylogin.cnf
-rw-------. 1 urmt urmt 136 Dec 19 11:01 .mylogin.cnf
$ mysql_config_editor print --all
[client]
user = <user>
password = *****
Host = <Host>
3) Connectez-vous en utilisant le client mysql
$ mysql <dbname>
ERROR 1045 (28000): Access denied for user '<user>'@'<Host>' (using password: NO)
Existe-t-il une valeur/configuration par défaut qui oblige le client à ignorer le mot de passe dans mylogin.cnf? Les propriétés utilisateur et hôte ont été lues correctement dans le fichier.
Je peux me connecter très bien si je fournis le mot de passe sur la ligne de commande:
$ mysql -p <dbname>
Enter password:
Reading table information...
...
mysql>
La version du client MySQL est 5.6.22, la version du serveur MySQL est 5.6.22, à la fois sur Oracle Linux 6. Le client et le serveur sont sur des hôtes différents.
Merci
Dans tous les cas, vous aurez probablement un mot de passe enregistré quelque part. Même le chemin de connexion MySQL 5.6 est facilement déchiffrable par toute personne motivée. Cet avertissement a dit que ce serait une solution facile.
Dans votre script d'environnement (par exemple ~/.profile
ou ~/.bashrc
), ensemble
alias mysql='mysql -uUser -pPasswd -hHostname'
(en insérant bien sûr votre utilisateur, mot de passe et nom d'hôte.)
Après la reconnexion de Shell, vous devriez pouvoir simplement faire
mysql
... qui utilisera votre alias et se connectera à la base de données et ignorera tous les mots de passe dans .my.cnf
des dossiers.
Note de sécurité: S'il y a d'autres utilisateurs sur votre serveur, vous voudrez peut-être chmod 700 votre script de profil afin que le mot de passe ne soit pas aussi facilement accessible par les autres. Tout administrateur avec root ou Sudo pourra toujours le voir; aucun moyen de contourner cela.
utilisez la commande suivante pour définir d'abord le chemin de connexion
mysql_config_editor set --login-path = lgpath --user = root -p
mot de passe
puis utilisez la commande ci-dessous pour vous connecter à mysql
mysql --login-path = lgpath
L'aide sur les options de chemin de connexion mysql peut être vue par
mysql_config_editor set --help
J'ai eu le même problème que OP, mais les réponses dans ce fil m'ont confondu. Le lien de Vinay Mandala a réellement fonctionné pour moi. Republié ici pour plus de clarté.
Mon problème:
ERROR 1045 (28000): Access denied for user '<user>'@'<Host>' (using password: NO)
Cela prouve que mysql_config_editor
ne gère pas correctement les caractères spéciaux du mot de passe.
Solution:
Quand mysql_config_editor
vous invite à saisir le mot de passe, assurez-vous de l'entourer de guillemets doubles ("). Ensuite, vous pouvez vous connecter très bien.
J'obtenais cette erreur, sauf qu'elle disait (en utilisant le mot de passe: OUI)
La raison mentionnée par Giovanni était due à un "#" dans le mot de passe. J'ai trouvé qu'une solution de contournement consiste à insérer des guillemets autour de votre mot de passe lorsque vous y êtes invité. La même restriction existe avec les mots de passe en texte brut utilisant .my.cnf.
La réponse Nawaz est correcte. J'ai peu à ajouter. Je vous suggère de faire quelques tentatives avec la variable d'environnement MYSQL_TEST_LOGIN_FILE pour créer un nouveau fichier de configuration, juste au cas où le fichier par défaut est corrompu. Utilisez également --no-defaults
passer .cnf
des dossiers. Si le mot de passe contient le caractère #
, mysql login-path
ne fonctionne pas.
$ export MYSQL_TEST_LOGIN_FILE=$HOME/mylogin.cnf
$ mysql_config_editor set --login-path=mytest --Host=127.0.0.1 --port=5622 --user=mytest --password
Enter password:
$ ls -l $MYSQL_TEST_LOGIN_FILE
-rw------- 1 mysql mysql 288 Feb 27 14:25 mylogin.cnf
$ mysql --no-defaults --login-path=mytest test
Je rencontre un problème similaire à celui de l'affiche originale. Je soupçonne que cela a à voir avec les caractères du mot de passe qui ne sont pas cryptés/décryptés correctement.
Pour confirmer, essayez de changer le mot de passe en quelque chose de simple et voyez si ce problème disparaît.
NOTE si vous essayez d'exécuter le path
sous tilisateur linuxroot
- Vous ne peut pas simplement utiliser Sudo
. Vous devez vous connecter en tant que root IE
user@server:$ Sudo su
user@server:$ Enter Password
root@server:$ mysql_config_editor set --login-path=data-main --user=<user> --password --Host=<Host>
root@server:$ Enter Password
root@server:$ exit
user@server:$ ...
Aussi comme mentionné dans d'autres articles ici .. Vous devez utiliser des guillemets doubles autour de votre mot de passe mysql
s'il contient autre chose que des caractères alphanumériques.
J'ai eu ce problème avec un script Shell. Mon script modifiait la valeur $ HOME et cela a fait que --login-path = *** semblait être ignoré. Lorsque j'ai arrêté de modifier la valeur $ HOME, cela a commencé à fonctionner.