MySQL / 사용자 계정 추가, 권한 부여하기
프로젝트 팀원분들께 MySQL 서버 사용자 계정을 생성해 드리는 김에 과정들을 기록해두려고 한다. 참고로 CentOS 7.X 서버를 사용하고 있다.
MySQL 접속 및 사용자 계정 조회
root 계정으로 접속한 후 현재 사용자 계정을 확인한다.
mysql -u root -p MySQL 접속
use mysql; 데이터베이스 선택
select host, user from user; 유저 테이블 조회
root 계정만 있는 것을 확인할 수 있다. 빨간 줄은 없는 걸로 치자.
사용자 계정 추가
다음 명령어를 통해 사용자를 추가할 수 있다.
create user {사용자ID};
create user {사용자ID}@localhost;
계정에 외부에서의 접근을 허용하려면 localhost 대신 '%'을 붙여주면 된다.
create user {사용자ID}@'%';
사용자를 추가하면서 비밀번호까지 설정하려면 뒤에 identified by '비밀번호'를 붙여주면 된다.
create user {사용자ID}@localhost identified by '비밀번호';
다음과 같이 사용자 계정을 추가한 후 다시 조회하면 추가된 것을 확인할 수 있다.
create user teamherb2021@'%' identified by '비밀번호';
select host, user from user; 유저 테이블 조회
사용자 계정에 권한 부여
계정이 생성되었으면, 그 계정이 접근할 수 있는 스키마를 생성하고 권한을 부여해야 한다. 스키마 생성은 다음 명령어를 통해 생성할 수 있다.
create database {스키마};
스키마를 생성하고 다시 조회하면 정상적으로 생성된 것을 확인할 수 있다.
create database teamherb2021;
show databases;
grant 나 revoke 명령어로 권한을 추가하거나 삭제할 수 있다.
사용자 계정에 권한을 추가하려면 다음과 같은 명령어를 실행하면 된다.
grant {권한} privileges on {스키마}.{테이블명} to {사용자ID}@{IP};
예시1) 모든 스키마와 테이블에 모든 권한을 사용자에게 부여할 경우
grant all privileges on *.* to {사용자ID}@{IP};
예시2) 특정 스키마의 모든 테이블에 insert, select 권한을 사용자에게 부여할 경우
grant select, insert on {스키마}.* to {사용자ID}@{IP};
아래와 같이 권한을 부여한 후, 권한을 확인해보면 변경된 것을 확인할 수 있다. 참고로 '%' 는 모든 IP에서의 접근을 허용한다는 의미이다.
grant all privileges on herb_bookstore.* to teamherb2021@'%';
show grants for teamherb2021@'%'; 사용자 계정의 권한 조회
사용자 계정, 권한 제거
사용자 계정을 제거할 때에는 drop 명령어를 사용한다.
drop user {사용자ID};
SQL문(delete)으로 직접 사용자를 삭제할 수 있지만 drop 명령어를 사용하는 것이 좋다고 한다.
권한을 제거할 때에는 revoke 명령어를 사용한다.
revoke {권한} privileges on {스키마}.{테이블} from {사용자ID}@{IP};
참고
'컴퓨터 공학 > 데이터베이스' 카테고리의 다른 글
레디스(Redis)의 기본 명령어 (0) | 2021.08.31 |
---|---|
레디스(Redis)란 무엇일까? (0) | 2021.08.31 |
댓글