컴퓨터 공학/데이터베이스

MySQL / 사용자 계정 추가, 권한 부여하기

highright96 2021. 10. 3.

프로젝트 팀원분들께 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;

 

grantrevoke 명령어로 권한을 추가하거나 삭제할 수 있다.

사용자 계정에 권한을 추가하려면 다음과 같은 명령어를 실행하면 된다.

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};

참고

https://yangyag.tistory.com/367

https://ssungkang.tistory.com/entry/MySQL-%EC%82%AC%EC%9A%A9%EC%9E%90-%EB%AA%A9%EB%A1%9D-%EC%B6%94%EA%B0%80-%EC%A0%9C%EA%B1%B0-%EB%B0%8F-%EA%B6%8C%ED%95%9C-%EB%B6%80%EC%97%AC-%EC%A0%9C%EA%B1%B0

'컴퓨터 공학 > 데이터베이스' 카테고리의 다른 글

레디스(Redis)의 기본 명령어  (0) 2021.08.31
레디스(Redis)란 무엇일까?  (0) 2021.08.31

댓글