Gdy Slave jest tylko do odczytu , nie jest w 100% chronione przed światem.
Według dokumentacji MySQL na read-only
Ta zmienna jest domyślnie wyłączona. Po włączeniu serwer nie zezwala na żadne aktualizacje, z wyjątkiem użytkowników posiadających uprawnienia SUPER lub (na serwerze podrzędnym) z aktualizacji wykonywanych przez wątki podrzędne. W konfiguracjach replikacji przydatne może być włączenie read_only tylko na serwerach slave, aby upewnić się, że slave akceptują aktualizacje tylko z serwera master, a nie od klientów.
Zatem każdy z uprawnieniami SUPER może czytać i pisać do takiego Slave ...
Upewnij się, że wszyscy nieuprzywilejowani użytkownicy nie mają uprawnienia SUPER.
Jeśli chcesz cofnąć wszystkie uprawnienia SUPER za jednym razem, uruchom to na Master i Slave:
UPDATE mysql.user SET super_priv='N' WHERE user<>'root';
FLUSH PRIVILEGES;
W odniesieniu do Slave, to zarezerwuje SUPER przywilej do sprawiedliwego root
i zapobiegnie robieniu zapisów, od których w przeciwnym razie byliby ograniczeni.
AKTUALIZACJA 28.08.2015, 17:39 EDT
Niedawno dowiedziałem się, że MySQL 5.7 wprowadzi super_read_only .
To zatrzyma SUPER użytkowników na ich ścieżkach, ponieważ 5.7 Dokumenty mówią
Jeśli zmienna systemowa read_only jest włączona, serwer zezwala na aktualizacje klienta tylko od użytkowników, którzy mają uprawnienia SUPER. Jeśli zmienna systemowa super_read_only jest również włączona, serwer zabrania aktualizacji klienta nawet użytkownikom, którzy mają SUPER. Zobacz opis zmiennej systemowej read_only, aby zapoznać się z opisem trybu tylko do odczytu oraz informacjami na temat interakcji między read_only i super_read_only.
Zmiany w super_read_only na serwerze głównym nie są replikowane na serwerach podrzędnych. Wartość można ustawić na serwerze podrzędnym niezależnie od ustawień na urządzeniu głównym.
super_read_only został dodany w MySQL 5.7.8.