/*
<사용자>
◎ 사용자(User)는 DBMS 에 접속하여 데이터베이스 구조 및 테이블, 데이터 등을 조작하고 조회할 수 있는 주체를 의미한다.
◎ 사용자의 구조는 다음과 같다.
[사용자 이름]@[원격 호스트]
- 사용자 이름 : 사용자이름
- 원격 호스트 : 로그인하는 사용자 '사용자이름'을 이용하여 본 DBMS 서버에 접속할 수 있는 원격 호스트를 의미한다.
이 값이 localhost 인 경우 원격 접속이 제한된 계정이라는 의미이다.
<사용자 만들기>
◎ 새로운 사용자를 만들기 위해 아래와 같이 명령한다.
CREATE USER `사용자 이름`@`원격 호스트` IDENTIFIED BY '비밀번호';
위에서 사용자 이름과 원격 호스트는 백틱(`) 으로, 비밀번호는 홑따옴표(') 로 감싼것에 주의한다.
<조회하기>
◎ 현재 존재하는 사용자를 확인하기 위해 아래와 같이 명령한다.
SELECT `user`,`host` FROM `mysql`.`user`;
<수정하기>
◎ 기존 사용자의 비밀번호를 수정하기 위해 아래와 같이 명령한다.
ALTER USER `사용자이름`@`원격호스트` IDENTIFIED BY '새로운 비밀번호';
<삭제하기>
◎ 기존 사용자를 삭제하기 위해 아래와 같이 명령한다.
DROP USER `사용자이름`@`원격호스트`;
<권한 부여하기>
◎ 존재하는 사용자에게 특정 스키마와 테이블에 대한 권한을 부여하기 위해 아래와 같이 명령한다.
GRANT [ALL|부여할 권리,...] ON [대상 스키마|*].[대상 테이블|*] TO `대상 사용자 이름`@`대상 사용자 원격 호스트`;
- 모든 권한을 부여하기 위해 ALL 이라는 키워드를 사용한다.
- 특정 권한만 골라서 부여하기 위해 콤마(,)로 구분하여 여러 권한을 부여할 수 있다.
가령, INSERT, SELECT, UPDATE 권한만 부여하기 위해 INSERT, SELECT, UPDATE 로 명기한다.
- 단, 모든 권한(ALL) 에 GRANT 명령을 실행하기 위한 권한은 포함되어 있지 않음으로 어떠한 사용자로 하여 GRANT 명령을
실행할수 있게 하기 위해 아래와 같이 명령한다.
GRANT [ALL|부여할 권리,...] ON [대상 스키마|*].[대상 테이블|*] TO `대상 사용자 이름`@`대상 사용자 원격 호스트`
WITH GRANT OPTION;
<권한 회수하기>
◎ 존재하는 사용자로부터 특정 스키마와 테이블에 대한 권한을 회수하기 위해 아래와 같이 명령한다.
REVOKE [ALL|회수할 권한,...] ON [대상 스키마|*].[테이블|*] FROM `대상 사용자 이름`@`대상 사용자 원격 호스트`;
만약, 어떠한 사용자가 GRANT 권한을 가지고 있고 이를 회수하기 위해서는 아래와 같이 명령한다.
REVOKE [ALL|[[GRANT OPTION]?회수할 권한,...]] ON [대상 스키마|*].[테이블|*]
FROM `대상 사용자 이름`@`대상 사용자 원격 호스트`;
가령, study@localhost 사용자로 부터 DROP 과 GRANT 권한을 회수하기 위해 아래와 같이 명령한다.
REVOKE DROP, GRANT OPTION ON *.* FROM `study`@`localhost`;
<권한 다시 불러오기>
◎ 부여하거나 회수한 권한을 즉시 적용하기 위해 아래와 같이 명령한다. 아래 명령어를 사용하지 않고 변경 사항을 적용하기 위해서는 서버를
다시 시작해야 한다.
FLUSH PRIVILEGES;
<권한 확인하기>
◎ 현재 로그인한 사용자 혹은 다른 사용자가 가지고 있는 권한을 확인하기 위해 사용한다.
SHOW GRANTS;
다른 사용자의 권한을 확인하기 위해서는 사용자 이름 및 원격 호스트를 아래와 같이 명시한다.
SHOW GRANTS FOR `사용자 이름`@`원격 호스트`;
*/