리눅스 관련

MySQL 초기설정 : DB 생성 및 신규 유저 권한 설정

ThingsMaker 2021. 9. 13. 21:05
반응형

MySql의 초기 설정 방법을 정리해 봤습니다.
mysql이 설치되어 있고 mysql 관리자는 id와 pw를 알고 있는 경우를 가정합니다.

DB와 이를 사용할 USER를 만들고, 내부/외부에서 접속이 가능하도록 권한 설정을 하는 방법을 설명합니다.

 



1. MySQL 실행

$ sudo mysql -u [관리자ID] -p

이후 입력창에 [관리자 PW]입력합니다.
예를들어 관리자 id가 root이고, 암호가 1234이면 "sudo mysql -u root -p"를 입력후 암호를 넣으면 됩니다.
잘 실행이 되었다면 아래의 화면과 mysql> 콘솔이 뜨는걸 확인 하실 수 있습니다.


2. 셋업용 설정
아래처럼 use mysql;을 입력하여 DB 셋업용 설정으로 들어갑니다.

mysql> use mysql;

정상적이라면 아래의 화면을 보실 수 있습니다.


3. 현재 유저 확인

mysql> select host, user from user;

실행하시면 테이블이 하나 보이게 되는데,

우선 호스트에 %로 되어있는것은 원격호스트에서 MySQL서버에 접속이 가능한 상태을 나타냅니다.
localhost는 내부의 같은 머신에 있는 host가 접속 가능함을 나타냅니다.
즉 %에 등록된 user는 외부머신에서도 원격 접속이 된다는 말이고,
localhost는 같은머신상에서만 접속이 된다는 소리입니다.
유저 생성시 이를 각각 해줘야 합니다.

4. 유저 생성
새로 만들 유저의 아이디와 패스워드를 하나 생각하신뒤, [신규유저명], [신규유저 암호]자리에 넣어주세요
4-1.로컬접속 허용

mysql> create user '[신규유저명]'@localhost identified by '[신규유저 암호]';

4-2.외부접속도 허용

mysql> create user '[신규유저명]'@% identified by '[신규유저 암호]';

예를 들어 신규유저명을 testUser1, 암호를 1234라고 하면, 아래처럼 되겠습니다.
create user 'testUser1'@localhost identified by '1234';
create user 'testUser1'@% identified by '1234';

5. 업데이트
지금까지 한 작업을 mysql에 업데이트 해 줍니다.

mysql> flush privileges;


6. DB생성
새로 생성할 DB명을 넣어 DB를 생성합니다.

mysql> create database [신규 DB명];

예를들어 db_test라고 하면 create database db_test 로 하시면 됩니다.
db의 작명으로 아래 정도로 생각하시면 될거 같고 넘어갑니다.
- 소문자 권장
- 구분이나 빈칸은 Underscore('_')를 사용
- 숫자는 가급적 사용 안함
- 너무 길지 않도록...

7. 유저에게 DB권한 주기
아마 이 부분이 제일 중요하지 않을까합니다. 여기서는 특정유저에게 DB의 모든 권한을 주는 설정입니다.

mysql> grant all privileges on [DB명].* to [유저명]@'localhost' identified by '[유저암호]';
mysql> grant all privileges on [DB명].* to [유저명]@'%' identified by '[유저암호]';
mysql> flush privileges;


첫번째 줄과 두번째 줄은 3번에서 설명한것처럼 내부에서 접속가능하도록하는것과, 외부에서 접속 가능하도록 하는것을 각각 설정하는것입니다.
3번째 줄은 설정내용을 업데이트함을 나타냅니다.
예를들어 DB명은 db_test이고 유저는 testUser1, 유저암호는 1234인 경우 아래처럼 설정하면됩니다.
grant all privileges on db_test.* to testUser1@'localhost' identified by '1234';
grant all privileges on db_test.* to testUser1@'%' identified by '1234';
flush privileges;

8. 유저권한확인
위의 설정이 정상적으로 되었다면 아래의 확인 명령으로 권한을 확인 하실 수 있습니다.

mysql> SHOW GRANTS FOR [유저명]@'%';
mysql> SHOW GRANTS FOR [유저명]@localhost;

SHOW GRANTS FOR testUser1@'%';
--> GRANT ALL PRIVILEGES ON `db_test`.* TO 'testUser1'@'%'
SHOW GRANTS FOR testUser1@localhost;
--> GRANT ALL PRIVILEGES ON db_test`.* TO 'testUser1'@'localhost'

DB를 생성하고 사용하려는 분들께 조금이나마 시간절약에 도움이 되었으면 해서 남깁니다.

반응형