본문 바로가기

Database/mysql

[mysql] 계정, 접속 권한 설정하기 (grant, revoke)

반응형




mysql에서 계정 생성, 삭제와
권한 할당, 회수에 대해 포스팅하겠습니다.

1. 테스트할 데이터베이스, 테이블을 확인합니다.

mysql
mysql > show databases;
mysql > use test;
mysql > show tables;

테스트 DB, Tables

2. 접근 권한을 할당합니다.

전체 권한 할당하기

grant all privileges on [데이터베이스 명.테이블 명] to [계정 명]@'[접속 IP 주소]' identified by '[비밀번호]';

일부 권한 할당하기

grant [할당 권한] on [데이터베이스 명.테이블 명] to [계정 명]@'[접속 IP 주소]' identified by '[비밀번호]';

권한 조회하기

show grants for [계정 명]@'[접속 IP 주소]';

변경 사항 적용

flush privileges;


할당 권한 상세 옵션

할당 권한 권한 의미
CREATE, DROP, ALTER 테이블에 대한 생성, 삭제, 변경 권한
SELECT, INSERT, UPDATE, DELETE 테이블의 데이터를 조회, 삽입, 변경, 삭제에 대한 권한
ALL 모든 권한
USAGE 권한을 부여하지 않고 계정만 생성

IP 권한 상세 옵션

특수한 접속 IP 주소 의미
% 모든 IP에서 접근이 가능
127.0.0.1 127.0.0.1, localhost 모두 자기 자신을 의미 하지만,
IP 주소로 접근하게 되면 127.0.0.1로 사용하게 되고
OS 차원에서 접근하게 되면 localhost로도 접근이 가능하다.
localhost

mysql 5.X
mysql > grant all privileges on test.GRANT_TEST to krujy@'localhost' identified by 'test1234!';
mysql > show grants for krujy@'localhost';
mysql > flush privileges;
mysql 8.X
mysql > create user krujy@'localhost'' identified by 'test1234';
mysql > grant all privileges on test.GRANT_TEST to krujy@'localhost';
mysql > flush privileges;
계정 생성, 권한 할당이 동시에 되는 모습


3. 정상적으로 권한이 할당되었는지 확인


현재 krujy라는 계정은 test라는 데이터베이스에 속해있는
GRANT_TEST 테이블에 대해서만 모든 권한을 가지고 있습니다.
실제로 접속하여 권한을 확인합니다.

비밀번호는 indentified by 에서 설정한 값
Grant로 할당한 Database, Table만 출력


테이블 접근 권한은 모든 권한을 할당하였습니다.
정상적으로 접근이 가능한지 확인합니다.

mysql
mysql > insert into GRANT_TEST (company, tel) values ("Samsung", "02-0000-0000"),
("LG", "02-1111-1111"),
("KAKAO", "02-2222-2222");

mysql > select * from GRANT_TEST;

mysql > delete from GRANT_TEST;

mysql > drop table GRANT_TEST;

GRANT_TEST 테이블에 대해 모든 접근이 가능
새로운 테이블 생성은 권한이 없어 실패한 모습



4. 접근 권한을 제거하는 방법


grant로 접근 권한을 할당했다면
revoke로 접근 권한을 회수할 수 있습니다.

root 계정으로 다시 접속합니다.
mysql -u root -p

mysql root 계정으로 다시 접속




revoke [할당 권한] on [데이터베이스 명].[테이블 명] from [계정 명]@'[접속 IP 권한]';

mysql
mysql > show grants for krujy@'localhost';
mysql > revoke all on test.GRANT_TEST from krujy@'localhost';
mysql > flush privileges;

krujy 계정의 test.GRANT_TEST 테이블 접근 권한을 삭제한 모습



추가로 계정을 삭제하고 싶다면 아래와 같이 입력합니다.

drop user [계정 명]@'[접속 IP 주소]';

mysql
mysql > drop user krujy@'localhost';
mysql > show grants for krujy@'localhost';

계정 삭제 후 조회하면 찾을수 없다는 메시지를 출력


해당과 같이 계정 생성, 계정 삭제, 권한 할당, 권한 회수를 할 수 있습니다.




반응형