본문 바로가기
코딩/SQL

[SQL] Database 정의 / User 관리

by 미생22 2023. 2. 15.
728x90

1. 개념

Database: 여러 사람이 공유해 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합체

DBMS(Database Management System): 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고 데이터베이스를 관리해주는 소프트웨어

관계형 데이터베이스(RDB: Relational Database): 서로간에 관계가 있는 데이터 테이블들을 모아둔 데이터 저장공간

1-1. SQL  정의

SQL(Structured Query Language): 데이터베이스에서 데이터를 정의, 조작, 제어하기 위해 사용하는 프로그래밍 언어

1-2. SQL 구성

  • 데이터 정의 언어(DDL : Data Definition Language) : CREATE, ALTER, DROP 등의 명령어
  • 데이터 조작 언어(DML : Data Manipulation Language) : INSERT, UPDATE, DELETE, SELECT 등의 명령어
  • 데이터 제어 언어(DCL : Data Control Language) : GRANT, REVOKE, COMMIT, ROLLBACK 등의 명령로 계정별 권한을 부여하거나 실행에 관련된 명령어

 

2. Database 관리

Root 계정으로 mysql에 접속 - Terminal 실행 - Root 계정 비밀번호 입력

show databases;

show 명령어로 database들을 확인한다.

CREATE DATABASE dbname;

CREATE 명령어로 Database 이름을 지정하여 생성한다.

USE dbname

USE 명령어로 해당 database로 이동한다.

DROP DATABSE dbname

DROP명령어로 해당 database를 삭제한다.

3. User 관리

3-1. User 조회

사용자 정보는 mysql이라는 database에서 관리하므로 일단 mysql로 이동 후 조회한다.

use mysql;
SELECT host, user FROM user;

host에는 localhost 4개가 있고 user에는 mysql.으로 시작하는 system user들과 root 계정이 있다.

 

3-2. User 생성

일단 user들을 생성해보자.

user에는 현재 PC에서만 접속 가능한 user들과, 외부에서 접속 가능한 user 두 가지로 나누어진다.

3-2-1. local user

현재 PC 즉 local에서 접속 가능한 user를 생성하려면 아래 코드가 필요하다.

CREATE USER 'username'@'localhost' identified by 'password';

user니까 비밀번호가 있어야한다. password와 같이 user를 만들어준다.

3-2-2. 외부 user

다음으로, 외부에서 접속 가능한 사용자를 비밀번호와 함께 생성하는 방법이다.

CREATE USER 'username'@'%' identified by 'password';

%는 외부에서 접속가능하다는 뜻이다.

3-2. User 삭제

접근 범위에 따라 같은 이름의 사용자여도 별도로 삭제한다.

DROP USER 'username'@'localhost'
DROP USER 'username'@'%'

삭제하면 꼭 다시 select host, user from user;로 재확인해준다.

4. User 권한 관리

User를 처음 생성하면 별다른 권한을 갖고있지 않은 상태이다. 사용 권한을 부여하려면 환경을 만들어줘야한다.

권한 관리를 실습하기 위해 database를 생성한다.

위에 나온 것과 같이 아래 코드를 한 줄 한 줄 엔터치며 입력해 환경을 만들어준다.

CREATE DATABASE testdb;
CREATE USER 'noma'@'localhost' identified by '1234';
select host, user from user;

Username은 noma, password는 1234이다. 이제 User 권한을 확인해보자.

SHOW GRANTS FOR 'noma'@'localhost';

처음 user생성 시 기본적으로 갖고있는 권한이다.

이제 사용자에게 특정 데이터베이스의 모든 권한을 부여해보자.

GRANT ALL ON testdb.* to 'noma'@'localhost';

다시 noma의 권한을 보자.

SHOW GRANTS FOR 'noma'@'localhost';

testdb에 접근하는 권한이 부여된 것을 확인할 수 있다.

이제 사용자에게 주어진 특정 데이터베이스의 모든 권한을 삭제하는 코드를 입력해보자.

REVOKE ALL ON testdb.* from 'noma'@'localhost';

다시 위와 같이 show grants를 하면 testdb에 접근하는 권한이 사라진 것을 확인할 수 있다.

 

728x90

'코딩 > SQL' 카테고리의 다른 글

[SQL] 논리 연산자  (0) 2023.02.20
[SQL] Order by, 비교 연산자  (0) 2023.02.17
[SQL] 데이터 조작 언어 (select, insert, where, update, delete)  (0) 2023.02.16
[SQL] Table 생성/변경/삭제  (0) 2023.02.16
MySQL 다운로드/설치  (0) 2023.02.14