run - mysql connect command line linux
¿Cómo configuro MySQL temporalmente para solo lectura a través de la línea de comandos? (3)
Bueno, si el usuario ahora tiene todos los privilegios primero, necesita revocarlo
$>mysql -u DB_USER -pDB_PASS --execute="REVOKE ALL PRIVILEGES, GRANT OPTION FROM ''YOUR_USER'';"
Después de que le das, el permiso de selección
$>mysql -u DB_USER -pDB_PASS --execute="GRANT SELECT ON ''YOUR_DATABASE''@.* TO ''YOUR_USER''@''%'';FLUSH PRIVILEGES;"
Haz tus cosas y después otorga privilegios nuevamente al usuario.
$>mysql -u DB_USER -pDB_PASS --execute="GRANT ALL ON ''YOUR_DATABASE''@.* TO ''YOUR_USER''@''%'';FLUSH PRIVILEGES;"
Y eso es todo gente
NOTA: Revisión para cotización, tal vez se me olvidó algo
Estoy creando un script de bash que, entre otras cosas, recopila algunos datos de una base de datos MySQL. Mi usuario de MySQL tiene privilegios de escritura, pero por razones de seguridad me gustaría establecerlo temporalmente en un estado de solo lectura. ¿Es posible hacer esto desde una línea de comando?
Para responder a su pregunta original, puede poner toda su base de datos en modo de solo lectura con estos comandos:
FLUSH TABLES WITH READ LOCK;
SET GLOBAL read_only = 1;
y volver al modo normal con:
SET GLOBAL read_only = 0;
UNLOCK TABLES;
Tenga en cuenta que esta es una operación que tendrá un impacto profundo en el comportamiento de la base de datos. Entonces, antes de ejecutar esto, lea la documentación disponible de los comandos anteriores. Una forma mucho más común es revocar los privilegios DML del usuario específico y luego devolverlos.
Si está utilizando MySQL 5.6 o más reciente e InnoDB, puede hacer que una sesión sea de solo lectura.
SET SESSION TRANSACTION READ ONLY;
https://dev.mysql.com/doc/refman/5.6/en/set-transaction.html
"LEER SOLAMENTE" también ofrece un beneficio de rendimiento modesto.