Używam zadania cron, które wykonuje mysqldump za pośrednictwem skryptu PHP, zrzut wymaga przywileju RELOAD. Używanie konta administratora MySQL nie jest w porządku, ale nie tworzy też użytkownika z uprawnieniami administratora.Przywracanie licencji MySQL dla mysqldump podczas zadania cron PHP: Użyj konta administratora MySQL lub utwórz unikalnego użytkownika? Bezpieczeństwo?
Moim głównym zmartwieniem jest aspekt bezpieczeństwa, ładuję atrybuty db (nazwa użytkownika, hasło itp.) W chronionej "własności" klasy, z której korzystam.
Zastanawiam się, które podejście jest bardziej sensowne lub czy istnieje inny sposób osiągnięcia tych samych wyników.
Przegląd:
LAMP Serwer: CENTOS 5.8, Apache 2.2.3, MySQL 5.0.95, PHP 5.3.3
Cron zadanie zarys:
- Zrzuca surowy statystyk dane z dwóch tabel InnoDB w witrynie db, one mają relację klucza obcego.
- załadować dane do tabel w statystyki dB
- Pobierz ostatnią wartość autoinkrementacja klucza podstawowego, który był przeniesiona
- użyć wartości klucza podstawowego w zapytaniu, które usuwa skopiowane dane ze strony internetowej db
- procesowe przesyłane dane w statystykach db do wypełnienia Raporty tabele
- Po zakończeniu przetwarzania, usunięcia danych surowej statystyk ze statystykami db
Baza danych witryny internetowej jest skonfigurowana jako wzorzec z rejestracją binarną, a zreplikowany serwer zostanie skonfigurowany po tym, jak dane statystyczne nie będą już przechowywane i przetwarzane w bazie danych witryny (replikowanie bazy danych witryny było bodźcem do przeniesienia statystyk ich własna baza danych).
Wszystkie pliki dostępne podczas zadania cron znajdują się poza katalogiem DocumentRoot.
bezwzględne Nitty:
mysqldump przeprowadzone w pierwszym etapie wymaga przywilej przeładować, oto polecenie:
<?php
$SQL1 = "--no-create-info --routines --triggers --master-data ";
$SQL1 .= "--single-transaction --quick --add-locks --default-character-set=utf8 ";
$SQL1 .= "--compress --tables stats_event stats_event_attributes";
$OUTPUT_FILENAME = "/var/stats/daily/daily-stats-18.tar.gz";
$cmd1 = "/usr/bin/mysqldump -u website_user -pXXXXXX website_db $SQL1 | gzip -9 > $OUTPUT_FILENAME";
exec($cmd1);
?>
Komunikat o błędzie:
mysqldump: Couldn't execute 'FLUSH TABLES': Access denied; you need the RELOAD privilege for this operation (1227)
Działa dobrze, jeśli używam poświadczeń administratora mysql.
I nie było jasne, o replikacji, to do bazy danych strony, chcieliśmy przenieść statystyk off pierwsze dlatego, że zajmują więcej miejsca niż wszystko inne połączono i przetwarzanie czasem torfowisk rzeczy w dół. Po prostu zachowam zrzuty statystyk, ponieważ krótki czas zgłoszeń nie jest krytyczny. Więc nie tymczasowy. Domyślam się, że moja troska dotyczy bezpieczeństwa bardziej niż cokolwiek innego, podkreślę to w pytaniu. Jakieś przemyślenia na temat bezpieczeństwa w szczególności? – codewaggle
Jestem na ślepo zakładając, że nie jest to na współdzielonym hostingu z kontekstu. Upewnij się, że użytkownik może łączyć się tylko z żądanymi hostami i wybrać bezpieczne hasło? Prawdopodobnie nie ma tu prawdziwego zagrożenia. – Charles
Właśnie to chciałem usłyszeć. Jesteśmy właścicielami serwera i postanowiłem ustawić użytkownika na @localhost, myśląc o przeniesieniu statystyk na inny serwer, ale localhost będzie działał na razie. – codewaggle