레이블이 권한인 게시물을 표시합니다. 모든 게시물 표시
레이블이 권한인 게시물을 표시합니다. 모든 게시물 표시

2009년 10월 1일 목요일

MySQL 권한

MySQL권한에는 적용범위가 있다. 권한이 어느 범위에 부여되는지에 대해서 주의할 필요가 있다.

MySQL에서는 이것을 Scope라고 부른다. scope에는 다음과 같은 것이 있다.

글로벌
이 범위에 부여된 권한은 다른 scope에서 어떠한 설정을 하더라도 바뀌지 않는다.

호스트/DB/테이블/컬럼
글로벌권한보다도 적용범위가 좁게 된다. 각각 호스트나 DB단위로 권한을 설정하는 것이 가능하다.
글로벌 scope를 부여한 권한은 (글로벌 권한이라 부른다. ) 다른 scope에의한 설정을 무시한다.

다시말하면, 글로벌로 권한을 부여한 경우 아무리 호스트로 권한을 N으로 하더라도 권한은 부여된 상태이다.

2009년 9월 24일 목요일

MySQL 유저관리1: 유저추가

유저를 추가하는 경우 CREATE USER문이던지 GRANT문을 사용한다.

존재하지 않는 유저인 경우에는 자동적으로 추가된다.

1. CREATE USER '사용자명'@'호스트' [IDENTIFIED BY [PASSWORD] '평문 패스워드'] [, '사용자명'@'호스트' [IDENTIFIED BY [PASSWORD] '평문 패스워드']] ...

CREATE USER로 새로이 생성된 유저에는 권한은 없다.


2. GRANT 권한 [(필드명[,필드명...])] [,권한 [(필드명[,필드명...])] ] ...
ON {
[TABLE] {테이블명|*|*.*|데이터베이스명.*}
| PROCEDURE 데이터베이스명.스토어드프로시져명
| FUNCTION 데이터베이스명.FUNCTION명
}
TO '사용자명'@'호스트' [IDENTIFIED BY [PASSWORD] '평문 패스워드']
[, '사용자명'@'호스트' [IDENTIFIED BY [PASSWORD] '평문 패스워드']] ...

[REQUIRE
NONE |
[{SSL|X509}]
[CIPHER 'cipher' [AND]]
[ISSUER 'issuer' [AND]]
[SUBJECT 'subject' ]
]

[WITH 리소스* [리소스*] ...]

리소스*={
GRANT OPTION
| MAX_QUERIES_PER_HOUR 수
| MAX_UPDATES_PER_HOUR 수
| MAX_CONNECTIONS_PER_HOUR 수
| MAX_USER_CONNECTIONS 수
}


ON구절은 MySQL 5.0.6에서부터 사용할 수 있게 되었다. 부여하는 권한은 TABLE, PROCEDURE, FUNCTION가운데 지정한다. 또 REQUIRE구절은 SSL통신을 수행하고자 할 경우 사용한다. WITH구절은 리소스 제한을 하고 싶은 경우, GRANT문을 실행하고 있는 유저의 권한을 부여하고 싶을 경우 지정한다.

권한부여예
mysql>GRANT INSERT, SELECT, UPDATE, DELETE ON test.* TO 'user'@'localhost' IDENTIFIED BY 'pass';