여기서는 데이터베이스 생성이나 사용자 계정 관리 등을 MySQL DBMS를 중심으로 설명할 것이다.
MySQL 워크벤치를 실행하고 root 계정으로 DB에 연결하자. 그리고 다음의 쿼리를 실행하여 예제에서 사용할 데이터베이스를 생성하자.
create database chap14 default character set utf8;
데이터베이스를 추가한 뒤에는 MySQL에서 사용할 사용자를 추가한다. 사용자를 추가하기 위해서는 다음과 같은 순서로 명령을 실행하면 된다.
CREATE USER 'jspexam'@'localhost'IDENTIFIED BY 'jsppw';
GRANT ALL PRIVILEGES ON chap14.* TO 'jspexam'@'localhost';
CREATE USER 'jspexam'@'%'IDENTIFIED BY 'jsppw';
GRANT ALL PRIVILEGES ON chap14.* TO 'jspexam'@'%';
CREATE USER 쿼리는 새로운 계정을 생성한다. 구조는 다음과 같다.
create user '[계정]'@'[호스트]' identified by '[암호]'
[계정]은 DB 계정은, [암호]는 연결할 때 사용자 암호를 입력한다. [호스트]는 해당 계정이 접근하는 호스트 정보를 입력한다. 호스트 값이 localhost인 경우 localhost에서 해당 계정으로 접근할 때 해당 암호를 사용한다는 것을 뜻한다. 호스트 값이 '%'인 경우 모든 호스트에서 해당 계정으로 접근할 때 해당 암호를 사용한다는 것을 뜻한다. MySQL은 localhost와 다른 호스트를 구분하므로 사용자 계정을 생성할 때에는 localhost용 계정과 외부에서 접근할 때 사용할 계정을 각각 생성해주어야 한다.
GRANT 쿼리는 MySQL DBMS 계정에 권한을 부여할 때 사용하는 명령어로서, 기본 구조는 다음과 같다.
grant[권한목록] on [데이터베이스].[대상] to '[계정]'@'[호스트]'
권한 목록이 all privileges이면 모든 권한을 부여한다. 특정 권한만 부여하고 싶다면 다음과 같이 개별 권한 목록을 지정하면 된다.
grant select, insert, update, delete, create, drop on chap14.* to 'jspexam'@'%';
권한 부여 대상을 전체로 하고 싶다면 "*"을 값으로 사용한다. 예를 들어, 다음 코드는 jspexam 계정에 대해 chap14 데이터베이스의 모든 테이블에 모든 권한을 부여한다.
grant all privileges on chap14.* to "jspexam'@'%';
GRANT 명령어를 사용해서 'jspexam' 계정이 chap14 데이터베이스를 사용할 수 있도록 권한을 부여했다면, 제대로 연결되는지 확인할 차례다. MySQL 워크벤치에 다음 정보를 사용하는 연결을 새로 추가한 뒤 연결이 잘 되는지 확인해보자.
참고