BigData

MYSQL 계정 생성, 권한부여, 권한 삭제

IT오이시이 2017. 7. 19. 00:00
728x90

MYSQL  계정 생성, 권한부여, 권한 삭제 

 


1.사용자계정 생성

    mysql> create user 'userid'@'%'  IDENTIFIED BY 'userpasswd';



2.사용자에게 모든 것을 할 수 있는 권한 주기

    mysql> grant all privileges on *.* to 'userid'@'%';

 

 

3.사용자에게 특정DB에 대한 권한 주기

mysql> grant all privileges on dbname.* to 'userid'@'%';

 

 

4.호스트명(localhost) client 접속 사용자 관리

mysql> create user 'userId'@'localhost' identified by 'userpassword';
mysql> grant all privileges on *.* to 'userid'@'localhost';
mysql> grant all privileges on *.* to 'userid'@'192.168.73.%';
mysql> grant all privileges on *.* to 'userid'@'192.168.73.11';

 

5. DB 접근 사용자 권한 부여


    * 일반 사용자 권한 
       SELECT, INSERT, UPDATE, DELETE, INDEX,ALTER,CREATE, DROP, EXECUTE, CREATE ROUTINE, ALTER ROUTINE, CREATE VIEW, SHOW VIEW 

 mysql> grant SELECT, INSERT, UPDATE, DELETE, INDEX,ALTER,CREATE, DROP, EXECUTE, CREATE ROUTINE, ALTER ROUTINE, CREATE VIEW, SHOW VIEW  privileges on *.* to 'userid'@'192.168.73.11';


   * DBA 관리자 권한 

    DBA의 경우    PROCESS, RELOAD, SHOW DATABASES, SHUTDOWN, SUPER 등을 추가 하면 됩니다.

mysql> grant SELECT, INSERT, UPDATE, DELETE, INDEX,ALTER,CREATE, DROP, EXECUTE, CREATE ROUTINE, ALTER ROUTINE, CREATE VIEW, SHOW VIEW, \
        PROCESS, RELOAD, SHOW DATABASES, SHUTDOWN, SUPER \
        privileges on *.* to 'userid'@'192.168.73.11';



   * Replication 권한 

     REPL_SLAVE, REPL_CLIENT, [RELOAD]

mysql> grant SELECT, INSERT, UPDATE, DELETE, INDEX,ALTER,CREATE, DROP, EXECUTE, CREATE ROUTINE, ALTER ROUTINE, CREATE VIEW, SHOW VIEW, \
        REPL_SLAVE, REPL_CLIENT, RELOAD \
        privileges on *.* to 'userid'@'192.168.73.11';

 

 

6. DB 접근 권한 부여와 회수 방법 

 

  * DB를 설치하고 각 사용 계정에 적함한 계정을 적용하기 위해서 기존의 기능 권한을 제거 (REVOKE)후에 필요한 기능 권한을 부여 하는 것이 필요합니다. 아래와 같이 전체 기능 권한을 회수하거나 일부 권한을 추가 부여하고 수정하는 방법을 참고 바랍니다.

 

(1)  모든 권한 부여 와 모든 권한 삭제

 mysql> grant all on * to 'userid' with grant option;
 mysql> revoke  all privileges, grant from 'userid' ;

 -- revoker for replication user 

mysql> revoke  SUPER, SELECT, INSERT, UPDATE, DELETE, INDEX,ALTER,CREATE, DROP, EXECUTE, CREATE ROUTINE, ALTER ROUTINE, CREATE VIEW, SHOW VIEW  on *.* from 'repuser'@'127.123.123.%' ;

mysql> grant   REPL_SLAVE, REPL_CLIENT, RELOAD  on *.* to 'repuser'@'127.123.123.%' ;

 

 (2) 일부 개별 권한 부여 와 삭제

# 권한 회수
mysql> grant SELECT, INSERT, UPDATE, DELETE, INDEX, ALTER, CREATE, DROP  on  dbname.* to 'userid' with grant option; 

# 슈퍼 권한만 회수
mysql> revoke super on *.* from 'userid';

# 권한 변경 적용
mysql> FLUSH PRIVILEGES;   -- 메모리상에 commit 적용
* 권한 설정은 명령후 flush privileges 명령 없이는 적용이 되지 않는다.

 

 

6. 권한 설정 상태를 보관하는  참조 테이블

  - 각 DBMS는 다양한 시스템의 관리 정보를 VIEW, TABLE, Config File 등을 이용하여 관리하고 있습니다. Mysql은 이러한 정보를 "Information" 이라는 DB에 시스템에서 관리하는 정보를 보관 하고 있습니다.

> select * from mysql.user;       -- 계정별 접근관한 설정
> select * from mysql.db;         -- 개별 DB에 접근 권한 설정
> select * from mysql.host;       -- 개별 Host별 접근 권한 설정
> select * from mysql.table_priv;  -- 각 테이블별 접근 권한 설정
* 권한 설정은 위의 테이블 내용이 바뀐다고 적용 되지 않는다.
  반드시 "FLUSH PRIVILEGES" 명령을 수행해야 적용된다. (flush privileges)

  

7. 사용자의 권한 조회

   mysql> show grants for 'userid';

   mysql> show grants for 'userid'@'%';

 

 

8. mysql 계정 생성 examples

#user 생성 및 grant
mysql> CREATE USER 'friend'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'friend'@'localhost'  -> WITH GRANT OPTION; 
mysql> CREATE USER 'friend'@'%' IDENTIFIED BY 'some_pass'; 
mysql> GRANT ALL PRIVILEGES ON *.* TO 'friend'@'%'  -> WITH GRANT OPTION; 
mysql> CREATE USER 'admin'@'localhost' IDENTIFIED BY 'admin_pass';
mysql> GRANT RELOAD,PROCESS ON *.* TO 'admin'@'localhost'; 
mysql> CREATE USER 'dummy'@'localhost';

#grant 권한 조회
mysql> SHOW GRANTS FOR 'admin'@'localhost'; 
+-----------------------------------------------------+ 
| Grants for admin@localhost | 
+-----------------------------------------------------+
| GRANT RELOAD, PROCESS ON *.* TO 'admin'@'localhost' | 
+-----------------------------------------------------+
 
#사용자 계정별 grant 권한 부여로 접근 제어
mysql> CREATE USER 'custom'@'localhost' IDENTIFIED BY 'some_pass'; 
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP  -> ON db_name.*  -> TO 'custom'@'localhost'; 

mysql> CREATE USER 'custom'@'host1.example.com' IDENTIFIED BY 'some_pass';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP  -> ON expenses.*  -> TO 'custom'@'host4.example.com'; 

mysql> CREATE USER 'custom'@'%.example.com' IDENTIFIED BY 'some_pass'; 
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP  -> ON customer.*  -> TO 'custom'@'%.example.com';

    

728x90
반응형