我正在创建一个bash脚本,其中包括从MySQL数据库中收集一些数据。我的MySQL用户具有写入权限,但出于安全考虑,我想暂时将其设置为只读状态。是否可以通过命令行做到这一点?
我正在创建一个bash脚本,其中包括从MySQL数据库中收集一些数据。我的MySQL用户具有写入权限,但出于安全考虑,我想暂时将其设置为只读状态。请问是否可以通过命令行实现?我正在创建一个bash脚本,其中包括从MySQL数据库中收集一些数据。我的MySQL用户具有写入权限,但出于安全考虑,我想暂时将其设置为只读状态。是否可以通过命令行做到这一点?
我正在创建一个bash脚本,其中包括从MySQL数据库中收集一些数据。我的MySQL用户具有写入权限,但出于安全考虑,我想暂时将其设置为只读状态。请问是否可以通过命令行实现?回答您最初的问题,您可以通过以下命令将整个数据库设置为只读模式:
FLUSH TABLES WITH READ LOCK;
SET GLOBAL read_only = 1;
并通过以下方式返回正常模式:
SET GLOBAL read_only = 0;
UNLOCK TABLES;
请注意,此操作会对数据库的行为产生深远影响。因此,在执行此操作之前,请阅读可用的有关上述命令的文档。一种更常见的方法是撤销特定用户的DML权限,然后再将其授予回来。
如果您正在使用MySQL 5.6或更新版本和InnoDB,您可以使一个会话变为只读。
SET SESSION TRANSACTION READ ONLY;
https://dev.mysql.com/doc/refman/5.6/zh/set-transaction.html
"READ ONLY" 也提供了一定的性能优势。
$>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;"