我正在创建一个 bash 脚本,其中包括从 MySQL 数据库收集一些数据。我的 MySQL 用户具有写入权限,但出于安全原因,我想暂时将其设置为只读状态。是否可以从命令行执行此操作?
问问题
61673 次
3 回答
74
要回答您的原始问题,您可以通过以下命令将整个数据库设置为只读模式:
FLUSH TABLES WITH READ LOCK;
SET GLOBAL read_only = 1;
并返回正常模式:
SET GLOBAL read_only = 0;
UNLOCK TABLES;
请注意,这是一项将对数据库行为产生深远影响的操作。因此,在执行此操作之前,请阅读上述命令的可用文档。一种更常见的方法是撤销特定用户的 DML 权限,然后再将其授予。
于 2013-08-23T11:23:53.073 回答
22
如果您使用 MySQL 5.6 或更新版本和 InnoDB,您可以将会话设置为只读。
SET SESSION TRANSACTION READ ONLY;
https://dev.mysql.com/doc/refman/5.6/en/set-transaction.html
“只读”还提供了适度的性能优势。
于 2016-09-28T14:25:11.930 回答
3
好吧,如果用户现在首先拥有所有权限,你需要撤销它
$>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;"
这就是所有人
注意:查看报价,也许我忘记了什么
于 2013-08-23T11:12:54.663 回答