MySQL

MySQL installation and configuration

MySQL 설치와 초기 설정 방법을 설명한다. 여기서 설명하는 내용은 과학 계산을 위해 간단히 사용하기 위한 MySQL 설치 방법이다.

(*) Command line 명령어 (bash shell)과 SQL 명령어를 구분한다.

MySQL installation

설치는 아래의 명령어를 이용하여 진행할 수 있다 (Ubuntu 기준). 설치를 위해서는 관리자 권한 (sudo)이 필요하다..

sudo apt update
sudo apt install mysql-server
sudo systemctl start mysql.service

MySQL configuration

MySQL 서버 관리를 위해 관리자를 생성하는 과정을 설명한다. 특히, 관리자가 MySQL이 설치되어 있는 서버에 ssh를 이용해 접근할 수 있는 경우를 상정한다. 즉, 관리자가 ‘localhost’에서 접속하는 경우만 고려한다.

1. Root 권한으로 MySQL 접속하기

새로 설치한 MySQL server는 sudo 권한을 이용하여 접근할 수 있다. 접근 후에는 모든 권한을 가진 사용자를 만들어서 관리자로 지정하고, 이후 관리자가 database를 관리하도록 한다.

sudo mysql

2. 관리자 계정 생성과 모든 권한 부여

Database의 모둔 권한을 관리할 수 있는 관리자 계정을 생성한다. 아래 명령어로 이름은 “admin” 비밀번호는 “password”인 관리자 계정을 생성한다. admin과 password는 예시로 든 문자열이다. 보안을 위해 ‘admin’ 대신 자주 사용되지 않는 사용자 이름을 사용하고 유추하기 어려운 문자열을 비밀번호로 지정한다.

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

(*) 위 명령어는 모든 권한 (ALL PRIVILEGES)를 모든 데이터베이스와 테이블 (*.*)에 부여한다는 의미이다. ‘WITH GRANT OPTION’은 다른 사람의 권한을 조절할 수 있는 권한도 함께 부여함을 의미한다.

3. 데이터베이스 관리

추후 관리자 계정으로 database에 접속하고 관리한다. 아래 명령어를 이용해 접속한다.

mysql -u admin -h localhost -p 

(*) admin은 실제 관리자 권한을 가진 사용자의 이름을 의미한다.

Create a user and Grant privileges

MySQL database를 사용하기 위해서는 먼저 (1) 사용자를 생성해야 하고, 다음으로 (2) 데이터베이스에 대한 접근 권한을 사용자에게 부여하는 과정이 필요하다. MySQL에서 사용자를 정의할 때는 접근하는 위치 정보도 함께 정의해야 한다. 즉, 사용자와 접근 위치를 동시에 관리한다고 할 수 있다. 아래에서 사용자를 생성하는 방법과 접근 권한을 부여하는 방법을 설명한다.

1. Create user authenticated with password

아래 명령어는 비밀번호를 이용하여 접속하는 사용자를 생성하는 mysql 명령어이다.

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

  • username: 사용자 이름으로 교체 (eg. sp1020)
  • host: 접속하는 host 이름 (eg. localhost, IP 주소, etc.)
  • password: 접속 비밀번호 (eg. qlalfqjsgh)

2. Database 관한 부여

GRANT ALL PRIVILEGES ON <database>.* TO 'username'@'host';
  • 사용자에게 <database>의 모든 테이블(<database>.*)에 대한 권한을 부여

3. MySQL 접속하기

mysql -u <username> -h localhost -p


예제 (관리자 실습)

1. MySQL 접속

mysql -u admin -h localhost -p

2. 사용자 계정 만들기 / 데이터베이스 만들기 / 데이터베이스 관한 부여하기

CREATE USER 'example'@'localhost' IDENTIFIED BY 'example';
CREATE DATABASE test_db;
GRANT ALL PRIVILEGES ON test_db.* TO 'example'@'localhost';
FLUSH PRIVILEGES;
EXIT;
  • CREATE DATABASE는 데이터 베이스 생성 명령, test_db는 데이터베이스 이름
  • test_db.* 는 test_db의 모든 데이터 테이블

3. 사용자 계정으로 로그인

mysql -u example -h localhost -p

4. 사용자 계정으로 데이터 테이블 만들기

USE test_db; 
CREATE TABLE test (id int);
SHOW TABLES;
EXIT;
  • test이라는 이름을 지닌 데이터테이블 생성 (정수 형태의 id 라는 attribute만을 지닌 데이터데이블)
  • SHOW TABLES는 데이터베이스 안의 모든 테이블을 나열하는 명령어

5. 테스트 계정 및 데이터베이스 삭제

mysql -u admin -h localhost -p
DROP DATABASE test_db;
DROP USER 'example'@'localhost';
EXIT;
  • test_db 데이터베이스 삭제
  • example@localhost 사용자 삭제

Reference

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top