Database

MySQL 계정생성 및 권한주기

top2blue 2015. 12. 23. 14:39

최고 관리자로 접속

# mysql -u root -p 

mysql> USE mysql;
       //mysql 데이터베이스 선택
mysql> SELECT host, user, password FROM user;
       //사용자 계정 확인


새로운 계정추가

// 로컬 접속
mysql> CREATE USER 'userID'@'localhost' IDENTIFIED BY 'userPassword';
      //USER -> 사용자 계정 생성
      //'userID' -> 추가할 사용자 계정
      //'localhost' -> 로컬 접속만 가능
      //IDENTIFIED BY -> 비밀번호 생성
      //'userPassword' -> 추가할 사용자 비밀번호
 
// 원격 접속
mysql> CREATE USER 'userID'@'%' IDENTIFIED BY 'userPassword';
      //'%' -> 원격 접속만 가능


user 테이블에 직접 추가
// 로컬 접속
mysql> INSERT INTO user(host, user, password)
    -> VALUES ('localhost','userID', password('userPassword'));
 
// 원격 접속
mysql> INSERT INTO user(host, user, password)
    -> VALUES ('%','userID', password('userPassword'));


데이터 베이스 사용권한 추가

// 기존에 존재하는 사용자일 경우 권한 부여, 없을 경우 새로운 사용자도 함께 생성.
// 특정 데이터베이스의 모든 테이블에 접근/추가/수정/삭제 가능
mysql> GRANT ALL PRIVILEGES ON DBName.* TO 'userID'@'localhost'
    -> IDENTIFIED BY 'userPassword';
mysql> GRANT ALL PRIVILEGES ON DBName.* TO 'userID'@'%' 
    -> IDENTIFIED BY 'userPassword';
       //DBName -> 데이터베이스 이름 
       //IDENTIFIED BY 'userPassword' -> 기존에 있던 사용자일 경우 생략가능.
                           비밀번호를 변경하고 싶을 때 이 부분을 추가하면 된다.

/특정 데이터베이스의 특정 테이블만 접근/추가/수정/삭제 가능
mysql> GRANT ALL PRIVILEGES ON DBName.tableName TO 'userID'@'localhost'
    -> IDENTIFIED BY 'userPassword';
mysql> GRANT ALL PRIVILEGES ON DBName.tableName TO 'userID'@'%'
    -> IDENTIFIED BY 'userPassword';

// 모든 데이터베이스와 모든 테이블에 접근/추가/수정/삭제 가능 (보안문제가 우려되므로 특히 주의해야 함)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'userID'@'localhost'
    -> IDENTIFIED BY 'userPassword';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'userID'@'%' IDENTIFIED BY 'userPassword';
mysqlFLUSH PRIVILEGES;  // 변경된 내용 적용 

데이터베이스 권한 제거

mysql> REVOKE ALL ON DBName.tableName FROM 'userID'@'localhost';
mysql> REVOKE ALL ON DBName.tableName FROM 'userID'@'%';
 
mysql> REVOKE ALL ON DBName.* FROM 'userID'@'localhost';
mysql> REVOKE ALL ON DBName.* FROM 'userID'@'%';
 
mysql> REVOKE ALL ON *.* FROM 'userID'@'localhost';
mysql> REVOKE ALL ON *.* FROM 'userID'@'%';


사용자 제거

mysql> DROP USER 'userID'@'localhost';
mysql> DROP USER 'userID'@'%';