본문 바로가기
개발 이야기/리눅스 이야기

우분투 에서 Mysql DB 새로운 계정 추가 및 권한 주기 (Ubuntu, grant, create user)

by 런던살자 2019. 4. 24.

안녕하세요 마블랑입니다.

 

지난번 우분투에 Mysql DB를 설치하고 Root 계정의 비밀번호를 설정하였습니다.

 

앞으로는 이 Mysql DB를 이용하여 프로세스의 데이터를 저장하려고 합니다.

 

그렇다면 Root 계정이 아닌 사용자 계정이 따로 있어야겠죠? (실무에서도 보안때문에 필요할 것입니다.)

 

그래서 이번에는 Mysql에 사용자 계정을 추가하고 특정 DB를 사용할수 있는 권한을 주는 방법에 대해서 알아보겠습니다.

 

 

우선 사용자 계정이 사용할 데이터베이스를 만들어 보겠습니다.

 

Root 권한으로 Mysql에 접속합니다. (접속방법은 지난번 포스팅 참고!)

 

show databases;

 

커맨드를 입력하여 데이터베이스 목록을 확인합니다.

 

사용자 계정이 사용할 데이터 베이스를 만들어 보겠습니다.

 

create database (데이터베이스명칭);

 

괄호안에 있는 부분은 데이터베이스 명을 넣으시면 됩니다. 아래 화면을 참고하여 생성해주시기 바랍니다.

 

명령을 실행하고 다시 show databases; 를 입력하여 잘 생성이 되었는지 확인해 주세요~

데이터베이스가 생성되었으면 이제 사용자 계정을 추가하겠습니다.

 

create user '(사용자 계정명)'@'%' identified by '(비밀번호)'

 

괄호안에는 역시 사용자 계정과 비밀번호를 입력해주시기 바랍니다.

 

설명을 드리자면 @ 뒤에 있는 '%'는 사용자 계정을 허용하는 접속 IP 입니다.

 

자기 자신을 뜻하는 localhost를 입력하면 Mysql이 설치된 시스템에서만 접근이 가능하고 %라고 입력하면 다른 시스템에서 외부로 접근이 가능하다는 뜻입니다.

 

추후에 외부 접근도 가능하게 하기 위해서 마블랑은 %로 생성하였습니다.

 

다른 방법으로 설정하여 특정 IP대역만 허용할수도 있습니다. 

 

생성이 잘 되었나 해당 사용자계정으로 접속해보겠습니다.

접속이 되면 사용자 계정으로 데이터베이스 목록을 확인해 봅시다.

 

이전에 Root 로 생성한 lab 테이블이 보이지 않는군요.. 사용자 계정을 생성한 뒤에 권한을 주지 않아서 그렇습니다.

그럼 다시 Root 계정으로 접속하여 해당 사용자에게 권한을 부여하도록 하겠습니다.

 

 

grant all privileges on *.* to '(사용자계정명)'@'%';

grant all privileges on (데이터베이스명칭).* to '(사용자계정명)'@'%';

 

 

첫번째 명령어는 모든 권한을 주겠다는 명령어 입니다. Root계정과 동일한 기능을 한다고 보시면 됩니다.

 

두번째 명령어는 특정 데이터베이스만 사용하도록 권한을 주겠다는 명령어입니다.

권한을 부여하고 다시 사용자계정으로 접속합니다.

 

그리고 다시 데이터베이스 목록을 보면 lab 데이터베이스가 추가된것을 확인할수 있습니다.

그럼 테스트 삼아서 테이블을 만들고 데이터를 Insert 해보겠습니다.

 

사용자 계정 생성과 권한부여는 어렵지 않게 할수 있군요. 

 

직접 DB Table에 접근하여 사용자 계정을 생성하고 권한도 부여할수 있지만 간단하게 명령어만 이용하는것이 쉬울거 같아 이 방법에 대해서 소개했습니다.

 

 

이상 마블랑이었습니다. 읽어주셔서 고맙습니다~

댓글