[mysql] 특정 ip 접근권한 설정 :: 개발/일상_Mr.lee

[mysql] 특정 ip 접근권한 설정

Posted by Mr.mandu.
2016. 4. 2. 07:45 개발/DB

mysql -uroot -p            <-----mysql 접속



1. mysql.user // 사용자 계정 관리

2. mysql.db //사용자별 Database 권한 설정  ('tables_priv' 테이블 보다 우선시 함)

3. mysql.tables_priv // 사용자별 테이블 제어 권한 관리

 

사용자 추가

    접근허용권한= {Select, Insert, Update, Delete, Create, Drop, Grant, References, Index, Alter, Create View, Show view, Trigger}


    접근범위= 접근할데이터베이스명.테이블명 // 모든 데이터베이스의 모든테이블에 접근할려면 ( *.* )

    접근위치={localhost, 127.0.0.1, 특정 ip, %} // 설정된 위치에서만 로그인 가능함. (% = 모든 위치에서 로그인 가능)


    GRANT 접근허용권한 ON 접근범위 TO 'new_userid'@'접근위치' IDENTIFIED BY 'user_password'

 

    예 1 ) GRANT ALL ON *.* To 'test_user'@'%' IDENTIFIED BY '1234';

     // 모든 데이터베이스, 테이블을 제어가능한 권한을 가지는 test_user 계정을 추가 하고 패스워드는 1234 로 함.

 

    예 2 ) GRANT Select, Insert, Delete On test_db.test 'test_user'@'192.168.0.20' IDENTIFIED BY '1234'

    //'192.168.0.20' 번의 IP를 가진 시스템에서만 접근이 가능한 test_user 계정을 추가하고 패스워드는 1234 로 함.

    // 'test_db' 데이터베이스의 'test' 테이블에 Select, Insert, Delete 가능한 권한을 부여함.



2. 사용자 수정 및 권한 변경

    1) 사용자 패스워드 변경  // 데이터베이스를 직접 제어하는걸 추천 (GRANT 변경 가능 함( 사용자 추가 명령과 같음).

use mysql;

update user set password = pawword('new_password') where user = 'test_user';

 

    2) 테이블 접근 권한 변경

1) GRANT ALL ON *.* TO test_user@'%'; // 모든 데이터베이스 및 테이블에 제어가능한 모든 권한을 부여함.

2) GRANT Select On *.* to test_user@'%' ; // 권한 축소의 경우 적용되지 않는 것 같음.(계정 제거후 신규 추가로 진행)

 



3. 사용자 삭제

    아래와 같이 3개의 테이블에서 제거 한다.

    use mysql;

    delete from user where user = 'test_user';

    delete from db where user = 'test_user';

    delete from tables_priv where user = 'test_user';

 

4. 데이터베이스 생성 후 모든 계정에서 접근 가능하도록 하기

    이 경우에는 (Grant 명령으로 적용 안됨)

    use mysql;

    insert into db values ('%', 'test_db', '', 'Y','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N');

    //test_db 에 모든 계정이 Select 가능하도록 권한 설정. // 계정 컬럼(3번째)을 '' 공백으로 처리함으로 써 모든 계정을 허용함. 

 

마지막으로 시스템 적용 하기 위해서는 서비스를 재실행 하시거나..

>> Flush Privileges;   -- 명령을 해 주셔야 적용 됩니다.



mysql DB권한 공부(실전 적용)


select * from user;


INSERT INTO mysql.user (host,user, password, ssl_cipher, x509_issuer, x509_subject) VALUES ('0.000.000.000','root',password('pwpw'), '','','');


GRANT ALL PRIVILEGES ON *.* TO 'root'@'0.000.000.000';

또는 

GRANT ALL PRIVILEGES ON *.* TO 'root'@'0.000.000.000' IDENTIFIED BY '비밀번호' WITH GRANT OPTION;

FLUSH PRIVILEGES;