Selbständiges Login mit MySQL
Der Zugang zu MySQL kann im einfachsten Fall mit den Logindaten über die Befehlszeile erfolgen:
mysql --password=secret --user=username database_name < query.sql
mit der Datei query.sql als SQL-Batchdatei.
Dieser Ansatz hat zwei Nachteile. Einersiets ist er nicht sicher, anderseits müssen bei vielen solchen in Scripte verpackte Aufrufe bei einer Änderung der Loginparamter überall Anpassungen vorgenommen werden. Eine bessere Möglichkeit ist die Anmeldeinformationen in einer eignen Datei zu kapseln.. At start up, all MySQL programs read from one or more global option files, and lastly from the file called .my.cnf in the user's home directory, if such file exists. Alle MySQL-Programme lesen aus einer oder mehreren globalen Optionen-Dateien, und abschliessend von £HOME/.my.cnf. Alle Dateien verwenden das gleiche von MySQL mit my.cnf vorgegebene Format, unterteilt in Abschnitte und deren Optionen. Alle gültigen Befehlszeilen-Argumente werden in diese Dateien verpackt. Um wie beim obigen Beispiel ein automatisches Login zu erreichen, sollte die nur für den jeweiligen Benutzer mit leserechten versehene Datei $HOME/-my.cnf wiefolgt aussehen:
# Read by client programs
[client]
user=username
password=secret
database=database_name
Damit kann ein Aufruf des SQL-Scripts beispielsweise aus crontab folgendermassen aussehen:
mysql < query.sql
Angaben in den Optionsdateien werden von den Argumenten der Komandozeile übersteuert.
Ein wesentlicher Vorteil bei der Verwendung von Optionendateien ist, dass es einfach ist, einen ad hoc MySQL-Client mit der DB zu verbinden. Ein Beispiel unter Zuhilfenahme des Moduls ConfigParser:
import ConfigParser config = ConfigParser.ConfigParser() # read ~/.my.cnf if exists but do not raise error if not config.read(['site.cfg', os.path.expanduser('~/.my.cnf')]) if config.has_section("client"): # read options for MySQL clients if config.has_option("client", "password"): # got default password pass = config.get("client", "password")
Nach Oben |