목차
안녕하세요! 오늘은 MySQL 데이터베이스를 처음 다루시는 분들을 위해 새로운 데이터베이스(스키마)를 만들고, 해당 데이터베이스에 접근하여 사용할 수 있는 사용자를 생성한 뒤, 적절한 권한을 부여하는 전체 과정을 단계별로 안내해 드리겠습니다. 이 과정을 통해 특정 프로젝트나 애플리케이션만을 위한 독립적인 데이터 공간과 보안이 강화된 사용자 계정을 관리할 수 있게 됩니다.
1. MySQL 서버 접속 (루트 계정)
가장 먼저, 데이터베이스와 사용자를 생성하고 관리하기 위해서는 MySQL 서버에 관리자 권한(일반적으로 root 계정)으로 접속해야 합니다.
1) 터미널 또는 MySQL Command Line Client 실행
터미널(Linux/macOS)이나 명령 프롬프트(Windows)를 열고 다음 명령어를 입력합니다. 또는 MySQL Command Line Client 프로그램을 직접 실행해도 됩니다.
mysql -u root -p
-u root:root사용자로 접속하겠다는 의미입니다.-p: 비밀번호를 입력받겠다는 의미입니다. 명령어 실행 후 비밀번호 입력 프롬프트를 보게 됩니다.
2) 루트 계정 비밀번호 입력
MySQL 설치 시 설정했던 root 계정의 비밀번호를 입력하고 엔터를 누릅니다. (macOS에서 별도의 비밀번호를 설정하지 않았다면 그냥 엔터를 누르세요.)
성공적으로 접속되면 mysql> 프롬프트가 나타납니다.
2. 새 데이터베이스 생성하기
관리자 계정으로 접속했다면, 이제 새로운 데이터베이스를 만들 차례입니다.
명령어 형식:
mysql> CREATE DATABASE 데이터베이스이름;
세미콜론(;)은 SQL 문의 끝을 의미하므로 반드시 입력해야 합니다.
예시: MY_PROJECT_DB 라는 이름의 데이터베이스를 생성해 보겠습니다.
mysql> CREATE DATABASE MY_PROJECT_DB;
Query OK, 1 row affected 와 같은 메시지가 보이면 성공적으로 생성된 것입니다.
3. 새 사용자 계정 생성하기
데이터베이스를 만들었다면, 이제 이 데이터베이스에 접근하여 사용할 전용 사용자 계정을 만드는 것이 좋습니다. root 계정은 모든 권한을 가지고 있기 때문에, 보안상 실제 애플리케이션에서는 제한된 권한을 가진 특정 사용자를 만들어 사용하는 것이 일반적입니다.
명령어 형식:
mysql> CREATE USER '새사용자명'@'접근호스트' IDENTIFIED BY '비밀번호';
'새사용자명': 생성할 사용자의 이름입니다.'접근호스트':'localhost': 해당 MySQL 서버가 설치된 컴퓨터 내부에서만 접속 가능합니다.'%': 외부 IP를 포함한 모든 곳에서 접속 가능합니다. (보안에 유의해야 합니다)- 특정 IP 주소 (예:
'192.168.0.10')를 지정할 수도 있습니다.
'비밀번호': 해당 사용자의 비밀번호입니다.
예시: project_user라는 사용자를 로컬호스트에서만 접근 가능하도록, 비밀번호는 my_secure_password123으로 생성해 보겠습니다.
mysql> CREATE USER 'project_user'@'localhost' IDENTIFIED BY 'my_secure_password123';
만약 외부에서도 접속해야 한다면 '%'를 사용할 수 있습니다.
mysql> CREATE USER 'project_user'@'%' IDENTIFIED BY 'my_secure_password123';
필요에 따라 두 가지 모두 생성할 수도 있습니다.
4. 생성된 사용자에게 데이터베이스 권한 부여하기
사용자를 만들었다면, 이 사용자가 앞서 생성한 데이터베이스에 대해 어떤 작업을 할 수 있는지 권한을 부여해야 합니다.
명령어 형식:
mysql> GRANT 권한종류 ON 데이터베이스이름.테이블이름 TO '사용자명'@'접근호스트';
권한종류:SELECT,INSERT,UPDATE,DELETE등 특정 권한을 지정하거나,ALL PRIVILEGES(모든 권한)를 줄 수 있습니다.데이터베이스이름.테이블이름:MY_PROJECT_DB.*:MY_PROJECT_DB데이터베이스 내의 모든 테이블에 대한 권한을 의미합니다.MY_PROJECT_DB.specific_table: 특정 테이블에만 권한을 부여할 수도 있습니다.
예시: project_user 사용자에게 MY_PROJECT_DB 데이터베이스의 모든 테이블에 대한 모든 권한을 부여해 보겠습니다.
mysql> GRANT ALL PRIVILEGES ON MY_PROJECT_DB.* TO 'project_user'@'localhost';
권한 변경사항 시스템 적용
권한을 부여한 후에는 변경된 권한 정보를 시스템에 즉시 적용하기 위해 다음 명령어를 실행해야 합니다.
mysql> FLUSH PRIVILEGES;
이 명령어를 실행하지 않으면, 부여한 권한이 바로 적용되지 않을 수 있습니다.
5. 생성된 계정으로 데이터베이스 접속 확인
이제 새로 만든 사용자 계정으로 해당 데이터베이스에 잘 접속되는지 확인해 보겠습니다. 먼저 root 계정 접속을 종료합니다.
mysql> EXIT;
그리고 터미널에서 다음 명령어를 실행합니다.
명령어 형식:
mysql -u 사용자명 -p 데이터베이스이름
예시: project_user 사용자로 MY_PROJECT_DB 데이터베이스에 접속합니다.
mysql -u project_user -p MY_PROJECT_DB
앞서 설정한 project_user의 비밀번호 (my_secure_password123)를 입력합니다. 성공적으로 접속되면 mysql> 프롬프트가 다시 나타나고, Database changed 라는 메시지가 보일 수 있습니다 (명령어에 데이터베이스 이름을 지정했기 때문).
간단한 명령어로 현재 사용자와 데이터베이스를 확인할 수 있습니다.
mysql> SELECT USER(), DATABASE();
6. MySQL 접속 종료
작업이 완료되었다면 다음 명령어로 MySQL 접속을 종료합니다.
mysql> EXIT;
또는
mysql> QUIT;
Bye 라는 메시지가 출력되면 정상적으로 종료된 것입니다.
이제 여러분은 MySQL에서 새로운 데이터베이스를 만들고, 그 데이터베이스를 사용할 전용 사용자를 생성하며, 필요한 권한까지 부여하는 방법을 알게 되셨습니다. 이를 통해 보다 체계적이고 안전하게 데이터를 관리하실 수 있기를 바랍니다!