새 사용자에게는 권한이 없기 때문에 생성한 새 사용자에게 권한을 부여해야 합니다. GRANT 문을 사용하여 사용자 계정에 권한을 부여할 수 있습니다. 구문은 다음과 같습니다 -
구문
GRANT 권한,[권한],.. ON 권한 수준TO 사용자 [IDENTIFIED BY 암호][REQUIRE tsl_option][WITH [GRANT_OPTION | 리소스 옵션]];
위의 구문에 대한 설명은 다음과 같습니다 -
먼저 GRANT 키워드 뒤에 하나 이상의 권한을 지정합니다. 사용자에게 여러 권한을 부여하는 경우 각 권한은 쉼표로 구분됩니다.
그런 다음 권한이 적용되는 수준을 결정하는 Privilege_level을 지정합니다. MySQL은 전역( *.*), 데이터베이스( database.*), 테이블( database.table) 및 열 수준을 지원합니다. 열 권한 수준을 사용하는 경우 각 권한 뒤에 하나 또는 쉼표로 구분된 열 목록을 지정해야 합니다.
그런 다음 권한을 부여할 사용자를 배치합니다. 사용자가 이미 존재하는 경우 GRANT문은 권한을 수정합니다. 그렇지 않으면 GRANT 문은 새 사용자를 만듭니다. 선택적 절 IDENTIFIED BY를 사용하면 사용자의 새 암호를 설정할 수 있습니다.
그런 다음 사용자가 SSL, X059 등과 같은 보안 연결을 통해 데이터베이스 서버에 연결해야 하는지 여부를 지정합니다.
마지막으로 선택적 WITH GRANT OPTION 절을 사용하면 다른 사용자에게 우리가 소유한 권한을 부여하거나 다른 사용자로부터 제거할 수 있습니다. 또한 WITH 절을 사용하여 MySQL 데이터베이스 서버의 리소스를 할당할 수 있습니다. 예를 들어 사용자가 시간당 사용할 수 있는 연결 또는 명령문 수를 설정할 수 있습니다. 이것은 MySQL 공유 호스팅과 같은 공유 환경에서 매우 유용합니다.
예시
아래 예에서 우리는 사용자를 생성하고 권한을 부여합니다 -
mysql> mysqlDatabase 변경된mysql 사용> 'password123'으로 식별되는 사용자 abcd@localhost 생성, 쿼리 확인, 영향을 받는 행 0개(0.04초)
아래 쿼리는 새 사용자 계정 abcd@localhost에 대한 권한을 제공합니다.
mysql> abcd@localhost;+에 대한 그랜트 표시 -----+| abcd@localhost |+에 대한 권한 부여 |+------------------------------------------+ | 'abcd'@'localhost'에 *.* 사용 권한 부여 |+------------------------------------------------- --------+1 행 세트(0.01초)
이제 abcd@localhost 사용자 계정에 모든 권한을 부여하기 위해 다음 명령문을 사용할 수 있습니다. -
mysql> GRANT ALL ON *.* TO 'abcd'@'localhost' WITH GRANT OPTION;Query OK, 영향을 받는 행 0개(0.05초)
여기서 ON *.* 절은 모든 데이터베이스와 데이터베이스의 모든 개체를 의미합니다. WITH GRANT OPTION을 사용하면 abcd@localhost가 다른 사용자에게 권한을 부여할 수 있습니다.
이제 SHOW GRANTS 문을 다시 사용하면 abcd@localhost의 권한이 업데이트되었음을 알 수 있습니다.
mysql> abcd@localhost;+에 대한 그랜트 표시 --------------------------------+| abcd@localhost |+---------------------------------------------------------- --------------------------+| *.*에 대한 모든 권한을 'abcd'@'localhost'에 GRANT 옵션으로 부여 |+------------------------------ ---------------------------------------+1 행 세트(0.00초)사전>