리눅스/mysql

DB 계정생성및 권한부여 패스워드 변경

Rohin 2014. 11. 23. 10:56
반응형

1. GRANT 명령어를 사용하여 계정생성 및 DB 권한 주기

mysql> GRANT ALL PRIVILEGES ON *.* to mk@localhost IDENTIFIED BY 'password' WITH GRANT OPTION;
// 모든 DB 접속권한 부여 및 root 권한 부여, mk라는 유저는 localhost 에서만 접속가능 (내부접속)
mysql> flush privileges; //권한로드

: 모든곳(외부)에서 접속가능하게 하려면 mk@localhost 부분을 mk@'%' 로 바꿔주면 됨
: mk계정이 특정한 곳에서만 접속 가능하게 하려면 mk@localhost 부분을 mk@'ip주소' 로 바꿔주면 됨
: mk계정이 특정 DB에 접속을 하며(보이며) 해당 DB에'만' root 권한(모든 명령어) 을 줄때는 *.* 부분을 DB명.* 로바꿔주면 됨
: mk계정에 특정 명령어(권한)만 사용하게 할때는 ALL PRIVILEGES 부분을 바꿔주면 됨
ex) GRANT select, insert, delete, update ~~.... (select, insert, delete, update 만 실행 할 수 있음)

* GRANT 명령어가 아닌 mysql DB의 user테이블과 db 테이블을 이용하는 방법도 있지만 번거로우므로 패스..

2. 계정 패스워드 변경

root 권한으로 mysql 접속
mysql> show databases; //모든 db 목록 출력
mysql> use mysql; //mysql 이라는 db를 사용
mysql> show tables; // mysql DB의 모든 table 목록을 출력
mysql> show columns from user; // user 테이블의 구조를 살펴본다. desc user 로 해도 됨
mysql> UPDATE user SET password = password('변경패스워드') WHERE user = '계정';
// 매치된 row 가 있는지, 변경된게 몇개인지에 대한 결과가 나온다. 모든 결과가 0이라면 제대로 적용되지 않은것. 특정 계정만 바꾸려고 했으니 당연히 1이라는 결과값이 나와야 한다.
/* Result Example
 Query OK, 1 row affected (0.02 sec)
 일치하는 Rows : 1개 변경됨 : 1개 경고 : 0개
*/
mysql> flush privileges;

// mysql DB 선택후 바로 UPDATE 명령어를 내리면 된다. 여타 명령어는 DB를 확인하며 찾아가는 과정임..


3. 계정 삭제

root 계정 접속후
mysql> use mysql;
mysql> drop user 계정명;
// 관련 DB 정보 삭제



4. 계정 권한 확인 (2012.01.10 추가)

mysql> show grants for mk@'localhost';