Ich verwende den MySQL-Befehlszeilenclient und möchte nicht jedes Mal, wenn ich den Client starte, das Kennwort angeben müssen. Was sind meine Optionen?
Ich verwende den MySQL-Befehlszeilenclient und möchte nicht jedes Mal, wenn ich den Client starte, das Kennwort angeben müssen. Was sind meine Optionen?
Antworten:
Erstellen Sie eine Datei mit dem Namen .my.cnfin Ihrem Home-Verzeichnis, die so aussieht. Stellen Sie sicher, dass die Dateisystemberechtigungen so festgelegt sind, dass nur der Benutzer sie lesen kann (0600).
[client]
host = localhost
user = username.
password = thepassword
socket = /var/run/mysqld/mysqld.sock
#database = mysql
Da Sie auch Ihre Frage mysqldump markiert haben, sollten Sie sich diese Frage ansehen.
Verwenden von mysqldump in einem Cron-Job ohne Root-Passwort
Update (29.06.2016) Wenn Sie MySQL 5.6.6 oder höher ausführen, sollten Sie sich das Tool mysql_config_editor ansehen , mit dem Sie Anmeldeinformationen in einer verschlüsselten Datei speichern können. Vielen Dank an Giovanni , der mir das gesagt hat.
Mit dem mysql_config_editorDienstprogramm können Sie Authentifizierungsdaten in einer verschlüsselten Anmeldepfaddatei mit dem Namen speichern .mylogin.cnf.
So erstellen Sie einen neuen Satz von Anmeldeinformationen:
mysql_config_editor set --host=db.host.org --user=dbuser --password
und geben Sie Ihr Passwort ein, wenn Sie dazu aufgefordert werden.
Dadurch werden Ihre Authentifizierungsdaten im Standard- clientAnmeldepfad gespeichert .
Sie können mehrere Authentifizierungsdaten speichern, indem Sie eine andere --login-pathOption angeben:
mysql_config_editor set --login-path=db2 --host=db2.host.org --user=dbuser --password
Standardmäßig mysqlliest der Client die [client]und [mysql]Gruppen aus anderen Optionsdateien, sodass sie auch aus der Anmeldepfaddatei gelesen werden. Mit einer --login-pathOption lesen Client-Programme zusätzlich den benannten Anmeldepfad aus der Anmeldepfaddatei. Die aus anderen Optionsdateien gelesenen Optionsgruppen bleiben unverändert. Betrachten Sie diesen Befehl:
mysql --login-path=db2
Der mysqlClient liest [client]und [mysql]aus anderen Optionsdateien, und [client], [mysql]und [mypath]aus der Login - Pfaddatei.
So drucken Sie alle in der Konfigurationsdatei gespeicherten Informationen aus:
mysql_config_editor print --all=true
Weitere Informationen zum Dienstprogramm finden Sie unter "mysql_config_editor - MySQL Configuration Utility" .
Wir dürfen nicht so tun, als ob die .mylogin.cnf überhaupt sicher wäre, da ich my_print_defaults -s [use your login-path]damit dieses Passwort im Klartext anzeigen kann . Aus diesem Grund unterstützt MariaDB diesen Ansatz "Sicherheit durch Dunkelheit" nicht.
Es gibt einen anderen Weg, orthogonal zu den oben genannten Methoden, aber es kann ein Sicherheitsrisiko sein, wenn jemand anderes Ihren Monitor überwacht oder wenn Sie Ihren Verlauf speichern .
Trotzdem ist es eine Option, die verhindert, dass Sie dazu aufgefordert werden, und eine, die ich in wegwerfbaren Docker-Bildern und dergleichen verwende.
mysql -u YOUR_USER --password=YOUR_PASSWORD_HERE your_database -e "your query" etc.
Sie werden nicht dazu aufgefordert. Sie können einen temporären Alias in der Shell festlegen, wenn Sie dies wünschen.
Mit Vorsicht verwenden.
mysql Ver 14.14 Distrib 5.5.61-38.13 für debian-linux-gnu (x86_64) mit readline 5.1