ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MySQL 계정생성 및 권한주기
    Database 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'@'%';


    'Database' 카테고리의 다른 글

    LIKE절  (0) 2016.07.05
    SQL Statement Log 를 보기위한 log4jdbc 사용법  (2) 2016.03.24
    SQLite AUTO_INCREMENT  (0) 2016.03.22

    댓글

Designed by Tistory.