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';