본문 바로가기

About Security/PHP & MYSQL

mysql 계정 및 권한 설정 12월 14일 화요일

1. 계정 및 권한 설정
 * 설정 정보
 DB: mysql에서 작업을 한다.
db : 특정계정이 특정 db를 사용할 수 있는 권한
tables_priv : 특정계정이 특정db,table을 사용할수 있는 권한
user: 계정정보(계정명, 비밀번호, 전체권한)

1.1 비밀번호 변경
SET PASSWORD FOR 계정명@접속위치 = PASSWORD('비밀번호');

※ 권한 테이블에 직접적인 계정 또는 권한 설정시 반드시 아래의 명령을 수행해야 적용됨
 FLUSH PRIVILEGES;

insert into user (host, user, password) values('%', 'user1', password('1111'));

=>user1의 패스워드를 1111로 바꿔준다.
* database에 권한 설정
insert into db (host ,user,db, select_priv) values('%', 'user1', 'examdb' , 'y');

=> user1이 examdb라는 데이터베이스에 권한을 준다.

flush privileges; 

=>권한 리로드

▶ user1이 examdb의 테이블도 볼수있고 select도 할수있지만 insert는 불가능하다.
1.2 계정 생성 및 권한 부여
Grant 권한 on 디비명, 테이블명 to 계정명 @ 접속위치 indentified by '비밀번호'

mysql> grant all privileges on [1.db명].* to '[2.계정]'@'[3.접속 위치]' identified by '[4.비밀번호]

=> 해당 1의 db에 2의 접속아이피가 3의 계정으로 4의 비밀번호로 접속하는것을 승인한다.

권한 : SELECT , INSERT, UPDATE, DELETE, DROP , CREATE,..
( ALL:모든권한, USAGE:권한없음)

1.3 계정의 권한 삭제
REVOKE 권한 ON 디비명, 테이블명 FROM 계정명@접속위치
 mysql> REVOKE DELETE ON examdb.* from user3@'%';

=>examdb라는 db에서 user3의 delete권한을 삭제하라.

DROP USER 계정명@접속위치

=>drop user user3@localhost