Speichern Sie das MySQL-Client-Passwort oder richten Sie das Passwort ohne Authentifizierung ein

11

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?

Ausflug
quelle
Bitte akzeptieren Sie Antworten auf einige Ihrer vorherigen Fragen, da es sich bei einigen dieser Antworten anscheinend um richtige Lösungen handelt. Klicken Sie auf das markierte Häkchen links neben der Antwort.
Shane Madden

Antworten:

15

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.

Zoredache
quelle
Das ist großartig, es hat funktioniert. Danke
Reise
Wenn die Antwort Ihr Problem gelöst hat, sollten Sie auf das Häkchen klicken, um es zu akzeptieren.
Zoredache
1
Dadurch wird das Kennwort als einfacher Text gespeichert, eine Vorgehensweise, von der ich aus Sicherheitsgründen abraten würde.
Giovanni
@Giovanni sicher, obwohl der mysql_config_editor, den Sie in Ihrer Antwort erwähnen, nützlich ist, ist erst verfügbar, wenn Sie 5.6.6 ausführen. Es gibt heute noch Distributionen mit älteren Versionen.
Zoredache
Aber wie geht das unter Windows?
Wolfpack'08
9

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" .

Giovanni
quelle
2

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.

Mark Butler
quelle
Was ist dann die Antwort auf diese Frage?
Pierre.Vriens
0

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

tjb
quelle