6.2.6 권한 변경이 활성화되는시기
mysqld를 시작할 때 모든 부여 테이블의 내용이 메모리에 읽습니다. 인 메모리 테이블은 그 시점에서 액세스 제어에 사용됩니다.
사용자가 GRANT
, REVOKE
, SET PASSWORD
, RENAME USER
등의 계정 관리 문을 사용하여 부여 테이블을 간접적으로 변경하면 서버는 그 변화를 인식하고 곧 다시 부여 테이블을 메모리에로드 합니다.
INSERT
, UPDATE
, DELETE
등의 문을 사용하여 부여 테이블을 직접 변경하는 경우 서버를 다시 시작하거나 테이블을 다시로드하도록 서버에 지시 할 때까지 변경 내용은 사용 권한 확인에 영향을주지 않습니다. 부여 테이블을 직접 수정했지만 그들을 다시로드 잊은 경우 서버를 다시 시작할 때까지 변경 영향을주지 않습니다. 따라서 변경했는데 차이가 나타나지 않는 것을 이상하게 생각할 수 있을지도 모릅니다.
부여 테이블을 다시로드하도록 서버에 지시 플래시 권한 작업을 수행합니다. 이것은 FLUSH PRIVILEGES
명령문을 실행하거나 mysqladmin flush-privileges 또는 mysqladmin reload 명령을 실행하여 수행 할 수 있습니다.
부여 테이블을 다시 읽어는 기존 클라이언트 연결을위한 권한에 다음과 같은 영향을 미칩니다.
테이블 및 컬럼 권한 변경은 클라이언트의 다음 요청에서 사용할 수 있습니다.
데이터베이스 권한 변경은 클라이언트가 다음
USE
문을 실행했을 때 활성화됩니다.db_name
참고클라이언트 응용 프로그램이 데이터베이스 이름을 캐시하는 경우가 있기 때문에이 영향은 실제로 다른 데이터베이스로 변경하거나 권한을 플래시하거나하지 않는 한, 클라이언트 응용 프로그램에서 인식되지 않을 수 있습니다.
연결된 클라이언트에 대한 글로벌 권한 및 암호는 변경되지 않습니다. 이러한 변경은 후속 연결에만 사용됩니다.
서버가 --skip-grant-tables
옵션을 지정해 기동 된 경우 서버는 부여 테이블을 읽거나 액세스 제어를 구현하거나하지 않습니다. 모든 사용자가 연결하고 모든 것이 가능하기 때문에 보안이 없습니다. 그렇게 시작된 서버가 테이블을 읽어 액세스 검사를 사용하도록하려면 권한을 플래시합니다.