Meldung

DBA-Tipp: mysql_config_editor - Der Passwortsafe für ihre Datenbankinstanzen
(Quelle: ASPICON GmbH)

Analog zum Oracle "Secure External Password Store" bietet MySQL seit der Version 5.6.6 die Möglichkeit, eine passwortlose Anmeldung zu konfigurieren.

Die meisten MySQL DBAs werden jetzt denken: "Aber hey, das geht doch schon immer!"
Richtig - Durch das Anlegen einer '.my.cnf'-Datei mit den Inhalten

username=<username>
password=<password>

ist es seither möglich, diese zu bewerkstelligen.

ABER: Das Passwort muss hierbei im Plaintext hinterlegt werden. Eine Anpassung der Berechtigungen auf nur-lesen und nur-schreiben auf diese Datei bildet sicherlich einen Grundschutz vor unerlaubtem Zugriff, jedoch sind unverschlüsselte Passwörter generell eine eher schlechte Idee.

Seit der Version 5.6.6 ist das Tool 'mysql_config_editor',  das die Ablage und gleichzeitige Verschlüsselung der Passwörter erleichtert, in jeder Standardinstallation enthalten. Der 'mysql_config_editor' bietet die Möglichkeit, sogenannte 'login-paths' für mehrere Instanzen - auch per remote -  zu hinterlegen.

Die hierbei erzeugte Datei '.mylogin.cnf' wird im jeweiligen Home-Verzeichnis des Nutzers abgelegt und kann beispielhaft folgene Inhalte enthalten:

[my-login-path-local]
user = root
password = *****
password = *****
host = localhost
[my-login-path-remote]
user = root
password = *****
host = remote-host

Passwort-/ Logindatei anlegen:

mysql_config_editor set --login-path=my-login-path-local
--user=root --host=localhost --password

mysql_config_editor set --login-path=my-login-path-remote
--user=root --host=remote-host --password

Passwort-/ Logindatei anzeigen:

mysql_config_editor print --all

Anmeldung am jeweiligen Login-Path

mysql --login-path=my-login-path-local
mysql --login-path=my-login-path-remote

Beispiel: /etc/logrotate.d/mysql

/u05/mysqldata/server57-01/admin/log/*.log
/u05/mysqldata/server57-01/admin/error/*.err
{
  notifempty
  daily
  rotate 5
  missingok
  compress
  postrotate
    if test -x \
        /u01/app/mysql/server/5.7.17/bin/mysqladmin \
             --login-path=server57-01--mysqladmin \
        && \
        /u01/app/mysql/server/5.7.17/bin/mysqladmin \
             --login-path=server57-01--mysqladmin \
        ping &>/dev/null;
    then
        /u01/app/mysql/server/5.7.17/bin/mysqladmin \
             --login-path=server57-01--mysqladmin \
             flush-logs;
    fi
  endscript
}

Damit sind die Funktionen von 'mysqladmin' abgesichert, aber funktional gehalten, ohne Passwörter im Klartext zu verwenden.

Fazit:

Der mysql_config_editor ist ein eventuell verkanntes Feature, welche die Anmeldung an Datenbankinstanzen sichert und vereinfacht. Gerade beim Einsatz von Skripten ist hier anzuraten den 'mysql_config_editor' mit Loginpfaden zu versehen und zu nutzen.

Autor:   Tobias Wolf, Oracle Certified Professional, MySQL Database Administrator

Telefon: +49.371.909515 - 100

E-Mail: info@aspicon.de