programing

명령줄을 통해 일시적으로 MySQL을 읽기 전용으로 설정하려면 어떻게 해야 합니까?

lastmoon 2023. 7. 26. 22:20
반응형

명령줄을 통해 일시적으로 MySQL을 읽기 전용으로 설정하려면 어떻게 해야 합니까?

저는 무엇보다도 MySQL 데이터베이스에서 데이터를 수집하는 bash 스크립트를 만들고 있습니다.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/en/set-transaction.html

"읽기 전용"은 또한 적당한 성능 이점을 제공합니다.

지금 사용자가 모든 권한을 먼저 가지고 있다면 취소해야 합니다.

$>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;"

그게 다야 여러분들의 친구들

참고: 견적을 검토합니다. 제가 무언가를 잊어버린 것 같습니다.

언급URL : https://stackoverflow.com/questions/18401120/how-do-i-set-mysql-temporarily-to-read-only-through-the-command-line

반응형