[MySQL] 사용자 계정 생성/외부접속 허용

데이터베이스로그 2011. 3. 3. 23:14



자바나 다른 프로그래밍 언어에서  MySQL 데이터베이스에 접속하기 위해서는 외부에서 접속이 허용된 
계정이 있어야 한다.  외부접근 관리는 mysql 스키마의  user 테이블을 통해 관리가 되는데,  user 테이블의 중요한 
컬럼으로  Host, User, Password 이 있다.   특정 호스트(도메인 또는 ip) 의 어떤 사용자가 어떤 비밀번호를 사용하여 
데이터베이스에 접근할 수 있는지에 대한 정보를 저장한다. Host 컬럼에는 도메인 이나 IP 또는 % 가 들어갈 수 있다.
%는 와일등카드이며, 불특정 다수의 호스트를 의미한다. 
사용자 계정을 생성하고, 사용자 데이터베이스를 생성 후 그에 대한 접근권한을 설정하는 과정을 알아보자. 

1. 사용자 생성 
mysql> CREATE USER 'javauser'@'localhost' IDENTIFIED BY 'your_password';
위 명령은 이름이 javauser이고 비밀번호가 your_password인 로컬호스트 사용자를 생성한다. 이렇게 생성된 사용자는
로컬에서 밖에 접속이 되지 않는다. 외부에서 접속하기 위해서는 허용 도메인을 갖는 동일한 이름의 사용자를 하나더
생성해 주어야 한다. 
mysql> CREATE USER 'javauser'@'%' IDENTIFIED BY 'your_password';


2. 데이터 베이스 생성
mysql> CREATE DATABASE javauser;
javauser 라는 데이터베이스를 생성한다.


3. 데이터 베이스에 대한 접근권한 설정
mysql> GRANT ALL PRIVILEGES ON javauser.* TO 'javauser'@'localhost' WITH GRANT OPTION;
javauser 데이터베이스에 대한 모든 권한(javauser.*)을 로컬호스트 사용자 javauser 에게 부여한다.
로컬호스트 사용자와 외부접근 사용자는 별도의 사용자처럼 다뤄지기 때문에 외부접근 사용자에게도 권한을
부여해 주어야 한다.
mysql> GRANT ALL PRIVILEGES ON javauser.* TO 'javauser'@'%' WITH GRANT OPTION;


4. 계정에 대한 권한설정을 확인한다.
mysql> SHOW GRANTS FOR 'javauser'@'localhost';

CREATE USER,  GRANT 명령을 사용하는 대신,  INSERT 와 UPDATE를 사용하여 직접 GRANT 테이블을 수정할 수도 있다. 
이렇게 할 경우 다음과 같은 명령을 사용해 변경내용을  적용해 주어야한다.  
(CRETAE USER 명령에서 비밀번호는 password함수를 사용하여 직접 암호화 해주어야 한다. CREATE USER 명령은 자동으로
암호화 해준다. )
 FLUSH PRIVILEGES



'데이터베이스로그' 카테고리의 다른 글

[MySQL] 사용자 계정 생성/외부접속 허용  (0) 2011.03.03