MySQL/MariaDB: 'GRANT...'의 차이점은 무엇입니까?'사용자 생성'과 '허가'로 구분됩니까?
DB를 설정할 때 일반적으로 다음을 사용하여 사용자를 만듭니다.
CREATE USER myuser@localhost IDENTIFIED BY 'pa$$w0rd';
그런 다음 사용자에게 DB에 대한 몇 가지 권한을 부여합니다.
GRANT SELECT, INSERT, UPDATE ON dbname.* TO 'myuser'@'localhost' IDENTIFIED BY 'pa$$w0rd';
이 두 가지 명령어시퀀스를 이 방법으로 보고 있습니다.하지만, 만약 내가 이 일을 건너뛰면CREATE USER명령어 및 명령어GRANT사용자는 자동으로 생성되어 정상적으로 동작하는 것 같습니다.이유가 있나요?CREATE USER이전에도 사용할 필요가 있다GRANT아니면 단순히 이전 버전과의 호환성을 위한 오래된 관례일까요?
MySQL은 사용자에게 권한을 부여하는 것만으로 암묵적인 사용자 생성을 지원합니다.이 사용법을 통해 GRANT는 유휴 상태이며 복제에 안전합니다.예를 들어 사용자가 복제본에 존재하거나 존재하지 않는 경우 GRANT는 사용자를 생성합니다.사용자가 존재하는 경우 GRANT는 계속 작동하며 필요에 따라 권한을 추가합니다.
GRANT가 이렇게 사용되는 경우 IDENTED BY 절을 사용하여 비밀번호를 설정할 수 있습니다.사용자가 이미 존재하는 경우 IDENTIFED BY는 사용자가 이미 암호를 가지고 있기 때문에 필요하지 않습니다.사용자가 존재하지 않는 경우 IDENTIFED BY를 생략하면 암시적으로 사용자가 생성되지만 비밀번호는 입력하지 않고 누구나 해당 사용자로 로그인할 수 있습니다.
이는 보안상의 위험으로 간주되었습니다.예를 들어 IDENTIFICED BY 없이 GRANT를 사용하여 사용자 이름 철자를 틀렸을 경우 비밀번호가 없는 권한으로 실수로 새 사용자가 생성될 수 있습니다.
GRANT ALL ON *.* TO 'ruhnett'@'%'; -- misspelled username creates new user
그러면 누구나 새 사용자로 로그인하여 특권 액세스 권한을 얻을 수 있습니다.
따라서 MySQL 5.7에서는 GRANT를 사용하여 사용자를 암묵적으로 생성하는 것이 권장되지 않습니다.
사용자 생성...존재하지 않는 경우 구문은 idempotent 사용자 작성 대신 사용됩니다.이를 통해 개발자는 기존 사용자에게 권한을 부여할 때와 사용자를 생성할 시기를 보다 명확하게 지정할 수 있습니다.
MySQL 8.0에서는 동작하지 않습니다.에서 사용자를 자동으로 생성하는 기능GRANT명령어가 삭제되었습니다.사용할 필요가 있습니다.CREATE USER첫번째.
언급URL : https://stackoverflow.com/questions/63748051/mysql-mariadb-what-is-the-difference-between-grant-identified-by-vs-crea
'programing' 카테고리의 다른 글
| 참조별 JavaScript 대 값별 JavaScript (0) | 2022.11.30 |
|---|---|
| PHP. array_column을 객체 배열과 함께 사용할 수 있습니까? (0) | 2022.11.30 |
| VueJ가 어레이 길이 변경에 응답하지 않습니까? (0) | 2022.11.30 |
| Vue.js 엄밀한 모드에서는 허용되지 않는 속성의 다중 정의 (0) | 2022.11.30 |
| jQuery를 사용하여 간단한 팝업을 생성하는 방법 (0) | 2022.11.30 |