Когда Раб только для чтения , он не защищен на 100% от мира.
Согласно документации MySQL на read-only
Эта переменная по умолчанию отключена. Когда он включен, сервер не разрешает никаких обновлений, кроме как от пользователей с привилегией SUPER или (на подчиненном сервере) от обновлений, выполняемых подчиненными потоками. В настройках репликации может быть полезно включить read_only на подчиненных серверах, чтобы гарантировать, что подчиненные устройства принимают обновления только от главного сервера, а не от клиентов.
Таким образом, любой с привилегией SUPER может по желанию читать и писать такому Рабу ...
Убедитесь, что все непривилегированные пользователи не имеют привилегии SUPER.
Если вы хотите отозвать все привилегии SUPER за один раз, запустите это на Master и Slave:
UPDATE mysql.user SET super_priv='N' WHERE user<>'root';
FLUSH PRIVILEGES;
Применительно к подчиненному, это зарезервирует привилегию SUPER для того, чтобы просто root
и не позволять непривилегированным делать записи, от которых они иначе были бы ограничены.
ОБНОВЛЕНИЕ 2015-08-28 17:39 ПО ВОСТОЧНОМУ ВРЕМЕНИ
Я только недавно узнал, что MySQL 5.7 представит super_read_only .
Это остановит пользователей SUPER в их следах, потому что 5,7 Документов говорят
Если системная переменная read_only включена, сервер разрешает обновления клиентов только пользователям, имеющим привилегию SUPER. Если системная переменная super_read_only также включена, сервер запрещает обновления клиента даже пользователям, имеющим SUPER. См. Описание системной переменной read_only для описания режима только для чтения и информации о взаимодействии read_only и super_read_only.
Изменения super_read_only на главном сервере не реплицируются на подчиненные серверы. Значение может быть установлено на подчиненном сервере независимо от настройки на главном сервере.
super_read_only был добавлен в MySQL 5.7.8.