본문 바로가기

Tech/BoostCourse - WEB

[부스트코스] MySQL 시작하기(1/4) (SQL이란?, DB 생성, 사용자 생성과 권한)

사람과 사람이 대화하기 위해서는 언어가 필요하다.

마찬가지로 DBMS에게 명령을 내릴 때도 특별한 명령이 필요하다.

이 명령을 SQL이라고 한다.

 

SQL(Structured Query Language)

- SQL은 데이터를 보다 쉽게 검색하고 추가, 삭제, 수정 같은 조작을 할 수 있도록 고안된 컴퓨터 언어이다.

- 관계형 데이터베이스에서 데이터를 조작하고 쿼리하는 표준 수단이다.

 

 

SQL 문법의 종류 3가지

- DML(Data Manipulation Language): 데이터를 조작하기 위해 사용한다.

INSERT, UPDATE, DELETE, SELECT 등이 여기에 해당한다.

- DDL(Data Definition Lanauage):

CREATE, DROP, ALTER 등이 여기에 해당한다.

- DCL(Data Control Language): 데이터를 제어하는 언어이다. 권한을 관리하고, 데이터의 보안, 무결성 등을 정의한다.

GRANT, REVOKE 등이 여기에 해당한다.

 

 

Database 생성하기

콘솔에서 다음과 같이 명령을 실행한다.

MySQL 관리자 계정인 root로 데이터베이스 관리 시스템에 접속하겠다는 것이다.

mysql -uroot -p

 

암호를 설정했다면 암호를 입력하도록 되어있을 것이다. 설정했던 암호를 입력하고 엔터를 치면 mysql에 접속하게 된다.

(Mac의 경우 보안을 위해 입력을해도 화면에 입력한 글자가 출력되지 않는다. 잘 입력되고 있으니 화면에 나오지 않더라도 입력하고 엔터를 치면된다.)

 

접속에 성공한 경우 아래 화면과 같이 mysql> 프롬프트가 보인다.

 

관리자 계정으로 MySQL에 접속했다면, 다음과 같은 명령으로 데이터베이스를 생성한다.

create database DB이름;

여기서는 실습용으로 "exampledb"로 생성했다. 

데이터베이스가 정상적으로 생성된다면 다음과 같이 Qurey OK 메세지를 확인할 수 있다.

 

Database 사용자 생성과 권한 주기

Database를 생성했다면, 해당 데이터베이스를 사용하는 계정을 생성해야 한다.

또한, 해당 계정이 데이터베이스를 이용할 수 있는 권한을 줘야 한다.

 

아래와 같은 명령을 이용해서 사용자 생성과 권한을 줄 수 있다.

[5.7버전 이하]
grant all privileges on db이름.* to 계정이름@'%' identified by '암호’;
grant all privileges on db이름.* to 계정이름@'localhost' identified by '암호’;
flush privileges;

[5.7버전 이상]
CREATE USER 'USER_NAME'@'%'IDENTIFIED BY 'USER_PASSWORD'; 
GRANT ALL ON DB_NAME.* TO 'USER_NAME'@'%'; 
flush privileges ;

(대소문자 상관없음)
출처: https://murra.tistory.com/125

- db이름 뒤의 *는 모든 권한을 의미한다.

- @'%'는 어떤 클라이언트에서든 접근 가능하다는 의미이고, @'localhost'는 해당 컴퓨터에서만 접근이 가능하다는 의미이다.

- flush privileges는 DBMS에게 적용을 하라는 의미이다. (해당 명령을 반드시 실행해줘야 한다.)

 

사용자 계정 이름은 'exampleuser', 암호는 'example123!@#', 해당 사용자가 사용하는 데이터베이스는 'exampledb'로 설정해 보았다.

접근 권한은 localhost로 설정했다. (필자는 8.0.18버전이어서 처음 명령어에서 에러가 났다. 버전에 맞게 명령어를 입력해줬더니 잘 실행된 것을 확인할 수 있었다.) 

 

생성한 Database에 접속하기

아래와 같이 명령을 실행하여 원하는 데이터베이스에 접속할 수 있다. (mysql 접속 전 콘솔 창에서 하는 것임)

mysql -h호스트명 -uDB계정명 -p 데이터베이스이름

호스트명 = localhost or 127.0.0.1

DB계정명 = exampleuser

데이터메이스이름 = exampledb

(-p 다음에 띄어쓰기는 필수!)

 

엔터를 치고 설정한 비밀번호 example123!@#을 입력하면 접속되는 것을 확인할 수 있다.

 

MySQL 연결 끊기

프롬프트에서 quit혹은 exit라고 입력한다.

mysql> QUIT
mysql> exit

 

 

DBMS에 존재하는 데이터베이스 확인하기

작업하기 위한 데이터베이스를 선택하기 위해서는 어떤 데이터베이스가 존재하는지 알아보아야 할 때가 있다.

현재 서버에 존재하는 데이터베이스를 찾아보기 위해서는 "show"를 사용한다.

mysql> show databases;

 

사용중인 데이터베이스 전환하기

Database를 선택하기 위해, "use"를 사용한다.

mysql> use 데이터메이스명;

 

이 외에도 MySQL 프롬프트에서 MySQL의 현재 버전과 날짜, 계산식을 구하는 등의 기능을 사용할 수 있다.

쿼리의 키워드는 대소문자를 구별하지 않아도 되며, 여러 문장을 한 줄에 연속으로 붙여서 실행 가능하다.

또한, ₩c를 이용해서 쿼리를 작성하는 도중 중간에 취소할 수도 있다.

 

 

[부스트코스 관련 강의 링크]

SQL이란? - https://www.edwith.org/boostcourse-web/lecture/16720/

 

[LECTURE] 1) SQL이란? : edwith

들어가기 전에 사람과 사람이 대화하기 위해서는 언어가 필요합니다. DBMS에게 명령을 내릴 때도 특별한 명령이 필요합니다. 이 명령을 SQL이라고 합니다. 이번 시간엔 SQL에 대... - 부스트코스

www.edwith.org

반응형