본문 바로가기

Work Box (Ubuntu Server)/Ubuntu - MySQL

[Ubuntu][MySQL] 계정 생성 및 권한 설정

 

1. mysql root 계정으로 접속

show databases;

mysql database 확인.

- mysql 을 전체적으로 관리하는 DB

 

use mysql;

show tables;

DB 로 mysql 사용 지정.

 

mysql DB 내 테이블 조회 && 맨아래 user 테이블 확인

 

2. 계정 생성

 

원하는 계정 아이디로 localhost 와 %(외부 접속용) 두개를 만들어준다. 

CREATE USER '<계정아이디>'@localhost IDENTIFIED BY '<비밀번호>';
CREATE USER '<계정아이디>'@'%' IDENTIFIED BY '<비밀번호>';

commit;

localhost 는 내부 IP 접속용.
는 외부 IP 접속용. -> 123.123.% or 123.123.123.0/24 이런식으로 사용 가능

 

4번에서 확인한 user table에서 계정 정상 생성을 확인해준다.

SELECT host, user FROM user;

% 와 localhost 로 추가된것을 확인.

계정 생성 완료했으니 데이터 베이스 만들고 상기 계정들을 해당 데이터베이스에만 권한이 작용하도록 설정을 해주겠다.

 

3. 데이터 베이스 생성

CREATE SCHEMA <데이터베이스 이름>;
* 데이터베이스 명명 규칙 : 단어와 단어 사이는 "_" 로 구분

 

4. 생성된 데이터베이스에 새로운 계정 권한 부여

localhost, % 둘다 등록.

GRANT ALL PRIVILEGES ON <DB이름>.* TO '<계정>'@localhost;

GRANT ALL PRIVILEGES ON <DB이름>.* TO '<계정>'@'%';
* <DB 이름>.<Table 이름> 이다. 이렇게 되면 특정 DB 에 특정 Table 에만 모든 권한이 부여된다.
* 하지만 <DB 이름>.* 의 뜻은 특정 DB 내 모든 Tables 에 모든 권한을 부여하겠다는 뜻이다.

 

권한 부여 내용 반영

flush privileges;

 

5. 권한 정상 부여 확인

SHOW GRANTS FOR '<계정 ID>'@'%';

SHOW GRANTS FOR '<계정 ID>'@localhost;

USAGE 권한 지정자는 "권한 없이 계정만 존재" 한다는 의미로 사용.

현재 모든 권한은 방금 지정해준 Database 에만 있는것을 확인.

localhost 와 % 둘다 확인할 것.

 

계정 생성 및 권한 설정 완료

 

새로 생성한 계정 아이디로 접속해서 Database 를 확인해보면 mysql, sys 같은 중요 root Database 들은 없고 위에서 권한을 할당해준 Database 가 보일것이다.