如何通过命令行将MySQL临时设置为只读?

Jim*_*y C 32 mysql shell command-line readonly

我正在创建一个bash脚本,除其他外,它从MySQL数据库中收集一些数据.我的MySQL用户具有写权限,但出于安全考虑,我想暂时将其设置为只读状态.是否可以从命令行执行此操作?

Flo*_*Doe 54

要回答原始问题,可以通过以下命令将整个数据库设置为只读模式:

FLUSH TABLES WITH READ LOCK;
SET GLOBAL read_only = 1;
Run Code Online (Sandbox Code Playgroud)

并返回正常模式:

SET GLOBAL read_only = 0;
UNLOCK TABLES;
Run Code Online (Sandbox Code Playgroud)

请注意,这是一项对数据库行为产生深远影响的操作.因此,在执行此操作之前,请阅读上述命令的可用文档.一种更常见的方法是从特定用户撤消DML权限,然后将其授予回授权.


txy*_*oji 8

如果您使用的是MySQL 5.6或更高版本以及InnoDB,则可以将会话设置为只读。

SET SESSION TRANSACTION READ ONLY;
Run Code Online (Sandbox Code Playgroud)

https://dev.mysql.com/doc/refman/5.6/en/set-transaction.html

“只读”还提供了适度的性能优势

  • 这应该是这个问题的公认答案。 (2认同)