Altes Problem. Man hat einen SQL Job, den man regelmäßig ausführen möchte. doch man scheut sich das DBA Passwort mit in der Cron oder im start script anzugeben. Meine übliche Vorgehensweise war bisher in solchen Fällen das anlegen einer Datei unter /root, die ich dann zur Laufzeit eingelesen habe. Wenn man die Datei nur für root lesbar macht, stellt das an sich kein Problem dar.
Unter Debian existiert aber eine wesentlich elegantere Methode, die mir beim konfiguriern von Munin aufgefallen ist.
Unter /etc/mysql existiert eine nur für root lesbare Datei mit namen debian.cnf.
# Automatically generated for Debian scripts. DO NOT TOUCH! [client] host = localhost user = debian-sys-maint password = xxxxxxxxxxxxxxxx socket = /var/run/mysqld/mysqld.sock [mysql_upgrade] user = debian-sys-maint password = xxxxxxxxxxxxxxxx socket = /var/run/mysqld/mysqld.sock basedir = /usr
Diese Datei wird mit --defaults-extra-file=/etc/mysql/debian.cnf eingebunden.
Jetzt kann man unbesorgt einen Einzeiler wie diesen
mysql --defaults-extra-file=/etc/mysql/debian.cnf -e "FLUSH QUERY CACHE;"
in die Cron schreiben.
Erfolgskontrolle
mysql --defaults-extra-file=/etc/mysql/debian.cnf -e "SHOW STATUS LIKE 'Qcache%';"
Nebenbei: Schön zu wissen, das man einen weiteren root user besitzt. Denn nichts anderes ist der debian-sys-maint.
Und weil es so schön ist, habe ich das gleich mal für das spamblocklog von Serendiptiy ausprobiert.
mysql --defaults-extra-file=/etc/mysql/debian.cnf -D databasename -B --skip-column-names -e "select count(*) from serendipity_spamblocklog;"
Aber darüber habe ich ja an anderer Stelle berichtet.