Ist es möglich, Passwörter pro Datenbank oder pro Host in .my.cnf zu konfigurieren?

47

Ich habe folgendes in meinem ~/.my.cnf

[client]
password="somepass"

Dies ist jedoch nicht das Kennwort, das ich für jeden Benutzer @ Host / jede Datenbank verwende, zu der ich eine Verbindung herstelle. Gibt es eine Möglichkeit, in der Konfiguration verschiedene Passwörter für verschiedene Dinge anzugeben, damit ich sie nicht eingeben muss?

Xenoterracid
quelle
[User @DTest hat eine Frage wie diese im Mai dieses Jahres beantwortet] [1] [1]: dba.stackexchange.com/questions/2820/…
RolandoMySQLDBA

Antworten:

64

Wie ich hier antwortete , können Sie für jeden Benutzer / Host / Datenbank, mit dem Sie eine Verbindung herstellen, einen Abschnitt hinzufügen. Verwenden Sie dazu die folgende Syntax ~/.my.cnf:

[clienthost1]   # Note: client + host1
user=myuser
password=mypass
database=dbname
host=server.location.com

Sobald dies in Ihrem Benutzer ist .my.cnf, können Sie es verwenden, indem Sie dies in einer Befehlszeile tun:

$ mysql --defaults-group-suffix=host1
Derek Downey
quelle
Wie versprochen +1 !!!
RolandoMySQLDBA
Können Sie das --defaults-group-suffix erklären?
Otheus
Nett. Es hat eine Weile gedauert, bis ich den Rest von hier herausgefunden habe, aber für ein mysql Cron-Backup kann ich jetzt mysqldump --defaults-group-suffix = host1 -P 3306 -h 111.0.0.xxx --ssl -u db_usr db_name verwenden > / home / myaccount / backups / db_name _ $ (echo $ (Datum '+ \% Y \% m \% d'). sql.gz), um ein gzipptes Backup zu erstellen. Danke!
user1324409
Hinweis: Wenn Sie diesen in einem globalen my.cnf, wie /etc/mysql/my.cnf, aber haben eine benutzerdefinierte .my.cnfmit [client]darin definiert, wird diese Einstellungen in der globalen Datei überschreiben! Boo.
Otheus
Beachten Sie, dass die Manpage von MariaDB fälschlicherweise angibt, dass ein Suffix von xden Abschnitt lesen wird, [client_x]aber in Wirklichkeit benötigen Sie das Suffix _xdafür
Daniel Böhmer,
8

Das Einfügen eindeutiger Kennwörter in Textdateien wird nicht empfohlen, da mysql 5.6.6.

Sie können mysql_config_editorKennwörter auch verschlüsselt speichern, um unterschiedliche Kennwörter für unterschiedliche Verbindungen bereitzustellen. Https://dev.mysql.com/doc/refman/5.6/de/mysql-config-editor.html

PerroVerd
quelle
3
Sicherheit durch Dunkelheit ...
Federico Razzoli
+1 für die Erwähnung von mysql_config_editor
RolandoMySQLDBA
1
Bis dieses Programm (1) auf frühere Versionen zurückportiert wurde, (2) die automatische Kennwortbereitstellung ermöglicht (dh das Lesen von Kennwörtern auf TTY nicht erzwingt), empfehle ich diese Methode nicht.
Otheus
Verfügt MariaDB über eine vergleichbare Unterstützung oder Funktion für mysql_config_editor?
Jeremy Hajek
@JeremyHajek Nein, das tut es nicht und wird es wahrscheinlich auch nie, da die MariaDB-Entwickler darauf hinweisen, dass nur ein falsches Gefühl für verbesserte Sicherheit besteht: MySQL 5.6: Sicherheit durch Selbstgefälligkeit?
Bloodgain
8

Die andere Antwort ist richtig. mysqladminUnterstützt leider nicht --defaults-group-suffix(zumindest nicht die Version, die ich benutze).

Daher griff ich zu verwenden , --defaults-file=HOST.cnfanstatt, die funktionieren mysql, mysqladminund mysqldump.

fifi finanzen
quelle
2
Das Hinzufügen zu meinem .bash_profile machte es noch einfacher:alias my-host='mysql --defaults-file=HOST.cnf'
spyle 20.10.15