crontab für die Bereinigung und Sicherung von MySQL-Datenbanken

crontab für die Bereinigung und Sicherung von MySQL-Datenbanken

Auf meiner OpenBSD-Box habe ich die folgende Crontab für den Benutzer _mysql

0 4 * * * /backup/mysql_backup/mysql_backup.sh
0 9 * * 1 mysql -uroot -pMySQLpassword -e "purge master logs before date_sub(now(),interval 5 day);"

Der erste war darauf ausgerichtet, die MySQL-Datenbanken auf dieser Box zu sichern. Mir ist jetzt klar, dass diese Jobs nicht ausgeführt wurden, da dem Benutzer _mysql die Verbindungsberechtigung verweigert wurde (ich habe bestätigt, dass das Kennwort für den Benutzer _mysql korrekt ist).

Ich denke also, ich sollte diese Jobs in der Crontab eines anderen Benutzers haben, aber in welcher (ich nehme an, sie sollten nicht in der Crontab von Root sein)? Ich suche also nach Vorschlägen, wie ich das konfigurieren kann. Oder muss ich meine MySQL-Konfiguration ändern?

Bearbeiten

Das Skript befindet sich auf demselben Server wie die Datenbank. Dieser Crontab-Eintrag schlägt mit dem Fehler fehl

connect(';host=localhost;mysql_read_default_group=mysqlhotcopy','',...) fehlgeschlagen: Zugriff verweigert für Benutzer '_mysql'@'localhost' (mit Passwort: JA) bei /usr/local/bin/mysqlhotcopy Zeile 178 aigaion_copy DBI

Antwort1

Sie können expire_logs_days=5 in Ihrer my.cnf verwenden, um dieselbe Funktion wie Ihr zweiter Cron-Job auszuführen. Das ist wahrscheinlich zuverlässiger.

Antwort2

Der Systembenutzer, der den Cronjob ausführt (_mysql), sollte im Verhältnis zum Benutzer, der sich mit der Datenbank verbindet (root), keine Rolle spielen. Wichtig wäre nur der Hostname/die IP des Servers, von dem/der das Skript eine Verbindung herstellt.

Befindet sich das Skript auf demselben Server wie die Datenbank? Welchen genauen Fehler erhalten Sie, wenn Sie versuchen, die Befehle auszuführen?

Antwort3

Der Benutzer „_mysql“@„localhost“ verfügt laut der geposteten Fehlermeldung nicht über die erforderlichen Berechtigungen innerhalb der Datenbank.

Sie müssen diesem Benutzer die erforderlichen Berechtigungen erteilen oder andere Anmeldeinformationen in Ihrem Skript /backup/mysql_backup/mysql_backup.sh verwenden.

verwandte Informationen