[mysql] 사용자 권한을 처음 부여 할 때 왜“GRANT USAGE”가 생성됩니까?

나는 DBMS의 관리자 측을 처음 접했고 이것을 발견했을 때 오늘 밤 (MySQL을 사용하여) 새 데이터베이스를 설정했습니다. 사용자에게 처음으로 권한을 부여한 후 다음과 같은 다른 부여가 생성됩니다.

GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password

문서에 따르면 USAGE권한은 “권한 없음”을 의미하므로 계층 적으로 작업을 허용하고 사용자는 모든 데이터베이스에 대해 일종의 권한을 가져야한다고 추론하고 있습니다.

나는 또한 IDENTIFIED BY내가 만든 보조금에 조항이 없을 때 왜이 줄에 조항 이 있는지 이해 하지 못합니다 (주로 IDENTIFIED BY조항 이 어떤 용도로 사용되는지 이해하지 못하기 때문에 ).

편집 : 이것을 원래 언급하지 않은 것에 대해 죄송합니다. 보조금은

GRANT ALL PRIVILEGES ON database.* TO admin_user
GRANT SELECT, INSERT, UPDATE, DELETE ON database.* TO user



답변

말했듯이 MySQL에서 USAGE“권한 없음”과 동의어입니다. 로부터 MySQL을 참조 설명서 :

USAGE 권한 지정자는 “권한 없음”을 나타냅니다. GRANT와 함께 전역 수준에서 사용되어 기존 계정 권한에 영향을주지 않고 리소스 제한 또는 SSL 특성과 같은 계정 속성을 수정합니다.

USAGE계정에 실제 권한을 부여하지 않고 계정이 존재 함을 MySQL에 알리는 방법입니다. 그들은 단지 MySQL 서버 를 사용할 수 있는 권한을 가지고 있기 때문에 USAGE. `mysql`.`user`권한이 설정되지 않은 테이블 의 행에 해당 합니다.

IDENTIFIED BY절은 해당 사용자에 대한 암호가 설정되었음을 나타냅니다. 사용자가 자신이 말하는 사람인지 어떻게 알 수 있습니까? 그들은 자신의 계정에 올바른 암호를 전송하여 자신을 식별 합니다.

사용자의 암호는 특정 데이터베이스 또는 테이블에 연결되지 않은 글로벌 수준 계정 속성 중 하나입니다. 그것은 또한 `mysql`.`user`테이블에 산다 . 사용자 ON *.*에게 다른 권한이없는 경우 권한 이 부여 USAGE ON *.*되고 비밀번호 해시가 여기에 표시됩니다. 이것은 종종 CREATE USER진술 의 부작용 입니다. 이러한 방식으로 사용자가 생성되면 처음에는 권한이 없으므로 단순히 부여 USAGE됩니다.


답변

나는 의미를 찾으려고 노력했고 GRANT USAGE on *.* TO여기서 발견했다. 다음 명령 ( ) GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password사용 하여 사용자 를 만들 때 부여되는 권한을 명확히 할 수 있습니다CREATE .

CREATE USER 'user'@'localhost' IDENTIFIED BY 'password'; 

로 권한 을 부여 하면 GRANT그 위에 새 권한이 추가됩니다.


답변

또한 IDENTIFIED BY절을 사용하지 않을 때 mysql 암호 는 공백 값이 될 수 있으며 비어 있지 않으면 암호화 될 수 있습니다. 그러나 yes USAGE는와 같은 간단한 리소스 제한자를 부여하여 계정을 수정하는 데 사용됩니다 MAX_QUERIES_PER_HOUR. 다시 WITH 절을 사용하여 지정할 수 있습니다 GRANT USAGE(추가 된 권한 없음) 또는 GRANT ALL, GRANT USAGE글로벌 수준, 데이터베이스 수준에서 지정할 수도 있습니다. 테이블 레벨 등 ….


답변