DAY 13 2023.03.21
MySQL에 사용자 설정을 알아보겠다.
사용자 추가, DB권한 부여 등 을 알아보겠다.
●사용자 설정
1. 사용자 추가하기
MySQL은 DB를 사용자를 나누고 각각의 권한을 부여하고 관리할 수 있다.
오늘은 그 설정과 권한에 대해 알아보겠다.
로컬(내컴퓨터)에서 접속 가능한 사용자 추가하기
●문법
create user '사용자명'@localhost' identified by '사용자 비밀번호';
예시
create user 'apple'@localhost' identified by '1111';
설정후 MySQL에서 접속하는 방법을 알아보자
1.workbench 접속

2. (+) 버튼 후 connection name은 자유롭게, username은 사용자이름으로 설정한 이름으로

Test Connection 이후 설정한 Password를 입력하면 workbench 접속 가능
DB 권한 부여하기
●문법
grant 권한옵션 privileges on 데이터베이스명.테이블명 to '사용자'@'특정 IP주소';
뜯어서 살펴보면 새로만든 사용자에 원하는 권한 과 어떤 데이터베이스(혹은 테이블) 특정 ip 설정할 수 있다.
그렇다면 가능한 권한옵션과 IP 상세 옵션에 대해 살펴보자
✔ 할당 권한 상세 옵션
create ,drop , alter : 테이블에 대한 생성, 삭제, 변경 권한
select,insert,update,delete : 테이블의 데이터를 조회,삽입,변경,삭제에 대한 권한
all : 모든 권한
usage : 권한을 부여하지 않고 계정만 생성 -> 디폴트값
예) grant select(줄 권한명) on 데이터베이스명.테이블명 to '사용자'@'localhost';
✔ IP 권한 상세 옵션
%: 모든 IP에서 접근이 가능
127.0.0.1 : localhost 에서 접근이 가능 (localhost와 같은 의미)
예) grant select(줄 권한명) on 데이터베이스명.테이블명 to '사용자'@'%'(모든 IP가능);
예) grant select(줄 권한명) on 데이터베이스명.테이블명 to '사용자'@'특정 ip주소';
※flush privileges
이 문법은 새로운 세팅을 적용하는 문법이다. 사용자 권한 설정 grant 문에서는 사용하지 않아도 되지만 다른 경우는 새로운 세팅을 적용하는 문법이기에 알아두자.
보통은 INSERT, DELETE, UPDATE를 통해 사용자를 추가, 삭제, 권한 변경 등을 수행하였을 때 이 변경 사항을 반영하기 위하여 사용한다. 이 떄 FLUSH PRIVILEGES는 grant 테이블을 reload함으로서 변경 사항을 즉시 반영하도록 한다.
그런데 만약 INSERT, DELETE, UPDATE와 같은 SQL문을 사용하지 않고 바로 grant 명령어를 사용하여 작업하였다면 FLUSH PRIVILEGES를 실행할 필요가 없어진다.
문제.
apple 데이터베이스에 kdt.member(kdt 데이터베이스의 member 테이블)
테이블을 복사하고 해당 테이블의 select 권한만 가능한 orange 계정을 만들어보자
풀이
create table apple.member(select*from kdt.member);
create user 'orange'@'localhost' identified by '1111';
grant select on apple.member to 'orange'@'localhost';
2.사용자 계정 조회 및 제거
사용자 계정 삭제하기
●문법
drop user '사용자명'@'끊고 싶은 IP'
사용자 목록 조회
●문법
use mysql;
select user, host from user;
사용자 권한 조회하기
●문법
show grants for '계정명'@'원하는 IP';
사용자 권한 제거하기
●문법
revoke 권한명 privileges on 데이터베이스명.테이블명(권한을 줄때 설정한 값들) from '계정명'@'원하는 IP';
'코딩공부 > DBMS' 카테고리의 다른 글
| DBMS(MySQL)_트렌젝션(Transaction) (0) | 2023.03.23 |
|---|---|
| DBMS(MySQL)_뷰(view) (0) | 2023.03.23 |
| DBMS(MySQL)_문자열함수 (3) | 2023.03.23 |
| DBMS(MySQL)_서브 쿼리 (sub Query) (0) | 2023.03.23 |
| DBMS(MySQL)_데이터 정규화 (0) | 2023.03.23 |