Как установить MySQL временно на чтение только через командную строку?

Я создаю сценарий bash, который, среди прочего, собирает некоторые данные из базы данных MySQL. У моего пользователя MySQL есть права на запись, но по соображениям безопасности я хотел бы временно установить его в состояние только для чтения. Можно ли это сделать из командной строки?

Ответ 1

Чтобы ответить на ваш первоначальный вопрос, вы можете поместить всю вашу базу данных в режим только для чтения с помощью следующих команд:

FLUSH TABLES WITH READ LOCK;
SET GLOBAL read_only = 1;

и вернуться в нормальный режим:

SET GLOBAL read_only = 0;
UNLOCK TABLES;

Помните, что это операция, которая будет иметь глубокое влияние на поведение базы данных. Поэтому перед выполнением этого ознакомьтесь с доступной документацией к приведенным выше командам. Гораздо более распространенный способ - отменить привилегии DML от конкретного пользователя и впоследствии предоставить их обратно.

Ответ 2

Ну, если у пользователя сейчас есть все привилегии, вам нужно отменить его

$>mysql -u DB_USER -pDB_PASS --execute="REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'YOUR_USER';"

После этого вы дадите ему разрешение на выбор

$>mysql -u DB_USER -pDB_PASS --execute="GRANT SELECT ON 'YOUR_DATABASE'@.* TO 'YOUR_USER'@'%';FLUSH PRIVILEGES;"

Сделайте свой материал и после этого снова предоставите привилегии пользователю

$>mysql -u DB_USER -pDB_PASS --execute="GRANT ALL ON 'YOUR_DATABASE'@.* TO 'YOUR_USER'@'%';FLUSH PRIVILEGES;"

И что все люди

ПРИМЕЧАНИЕ. Просмотрите цитату, возможно, я что-то забыл