리눅스 프로그래밍/MySQL

MySQL 계정 추가하기

삽질중 2010. 12. 22. 10:33

서버 관리를 하다보면 mysql 사용자 계정을 추가해 줄때가 있다 

./mysqladmin -V  버젼명 (테이터베이스 관리 tool)
./mysqladmin -p status 현재상태 
 

 데이터베이스 종류 보기
   mysql> show databases; 

mysql 상의 테이블 정보 보기
   mysql> show tables from mysql; 

데이터 베이스 생성
mysql> CREATE DATABASE testDB;

편집후에 반드시 mysql 재가동해야함.
   # mysqladmin -u root -p reload 
 

첫번째 방법은 아주 간단하다 한번에 끝낼수 있다.

GRANT ALL PRIVILEGES ON [DB명].[테이블명(*)] TO[유저명]@[서버명]IDENTIFIED BY '[암호]' WITH GRANT OPTION;

"WITH GRANT OPTION" 옵션은 다른 유저에게 권한 부여 여부다.

 

두번째 방법은 세밀하게 권한을 부여할 수 있는 방법이다. 일단 유저를 먼저 생성을 한다.

GRANT ALL PRIVILEGES ON[DB명].[테이블명(*)] TO[유저명]@[서버명]IDENTIFIED BY'[암호]' ;

 

유저를 생성후 권한을 한번에 줄수있다.

GRANT ALL ON[DB명].[테이블명(*)] TO[유저명]@[서버명];

 

특정 권한만 선택적으로 적용할 수 있다.

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALERT ON [DB명].[테이블명(*)] TO[유저명]@[서버명];

 

마지막으로 계정 권한을 새로 로드시켜 준다.

FLUSH PRIVILEGES;

 

권한 삭제는 GRANT 명령어 반대로 하면 된다.

REVOKE ALL ON[DB명].[테이블명(*)] TO[유저명]@[서버명];

 

특정 권한만 삭제할 수 있다.

REVOKE SELECT ON[DB명].[테이블명(*)] TO[유저명]@[서버명];

 

권한만 삭제한다고 유저가 삭제되진 않는다. 아래와 같이 해줘야 완벽하게 유저가 제거된다.

DROP USER [유저명]@[서버명];
 

mysql이 외부로도 서비스가 가능하게 하려면,

몇 가지의 확인사항과 그 외에 추가적인 설정을 해야 할 필요가 있습니다. 

mysql이 설치된 서버의 운영체제를 명시해주시지 않아서,

유닉스 계열 운영체제라 가정하고 설명드리겠습니다.
 

#1.

우선, 기본적으로 mysql 은 tcp 3306번 포트를 통해 서비스를 제공합니다.

따라서, 외부에서 DB에 접근할 수 있도록 하기 위해서는

서버의 tcp 3306번 포트가 방화벽에 막혀 있지는 않은지 확인해야 하며

만약 막혀 있을 경우 열어주어야 합니다. 

iptables -L명령으로 차단/허용 리스트 조회가 가능합니다. 만약 포트가 막혀 있을 경우, 

#iptables -I INPUT-p tcp --dport 3306-j ACCEPT 

명령으로 열어주시면 됩니다.

#2.

그 다음에는 DB 사용자 계정에 외부에서의 접근 권한을 부여해야 합니다.

외부에서 DB에 접근할때만 사용하는 계정을 새로 생성해도 됩니다.

'%'의 의미는 외부에서의 접근을 허용한다는 의미입니다.

기존에 사용하던 계정에 외부 접근 권한을 부여하려면, Host를 '%' 로 하여 똑같은 계정을 추가해줍니다.

[계정을 추가]

mysql>USE mysql;

mysql>INSERT INTO user (Host, User, Password) VALUES ('localhost', '계정아이디', password('비밀번호'));
mysql>INSERT INTO user (Host, User, Password) VALUES ('%', '계정아이디', password('비밀번호'));
mysql>FLUSH privileges;

계정이 생성되었다면, 그 계정이 접근할 수 있는 데이터베이스를 생성하고 권한을 부여해야 합니다.

 

[데이터 베이스 생성 후 생성된 데이터베이스에 접속할 수 있는 계정 권한 설정]

mysql>CREATE DATABASE 데이터베이스명;
mysql>GRANT ALL privileges ON 데이터베이스명.* TO계정아이디@locahostIDENTIFIED BY '비밀번호';
mysql>GRANT ALL privileges ON 데이터베이스명.* TO계정아이디@'%'IDENTIFIED BY '비밀번호';

'리눅스 프로그래밍 > MySQL' 카테고리의 다른 글

[Ubuntu] 우분투 MySQL 설정  (0) 2016.07.06
DB 테이블 생성/권한설정  (0) 2016.06.30
MySQL 외부 접근 허용하기  (0) 2016.06.30
MySQL 기본 명령어 #1  (0) 2010.12.22
리눅스 MySQL 설치  (0) 2010.12.22