Language/SQL

데이터베이스 - 데이터베이스 생성 및 권한 부여(DDL)

simDev1234 2022. 8. 11. 22:37

|  개요

📌  인스턴스란? = database(데이터의 집합) = table space = 테이블이 위치하는 공간(디렉토리)
📌  계정은 왜 여러개 생성할까? 접속자마다 DB 관리권한이 다를 수 있다. 
📌  원격으로 접속하는 컴퓨터에 대한 접속권한도 고려해야 한다.

📌  SQL명령어 - DDL, DML, DCL

 

|  SQL (Structured Query Language)

- 의미 : DBMS와 소통하기 위한 구조화된 질의어

- 구분

데이터 정의어(DDL, Data Definition Langugae) CREATE, DROP, ALTER, TRUNCATE
데이터 조작어(DML, Data Manipulation Language) INSERT, UPDATE, DELETE, SELETE ( CRUD )
데이터 제어어(DCL, Data Control Language) GRANT, REVOKE, TRANSACTION, COMMIT, ROLLBACK..

☝️  데이터 정의어 : 테이블과 인덱스 구조를 관리

✌️  데이터 조작어 : DDL를 통해 테이블 구조가 잡히면 그 안에 넣을 데이터를 CRUD하는 언어

🤟 데이터 제어어 : 권한을 부여하거나 뺏는 등의 제어와 관련된 언어

 

|  데이터베이스 인스턴스 및 계정 생성 

A. 데이터베이스 생성과 삭제

📡 MariaDB

CREATE DATABASE /*테이블명*/;
DROP DATABASE /*테이블명*/;
더보기

📡Oracle

// 아래와 같이 테이블스페이스를 만들지 않으면 System(관리자=root)와 같은 공간 공유
DEFAULT TABLE SPACE USERS 기본테이블 스페이스;
TEMPORARY TABLESPACE 임시테이블 스페이스;

 

B. 데이터베이스 계정 생성

📡 MariaDB

- 데이터베이스 계정 조회

show databases;
use mysql;
select User, Host, Password from user;

- 계정 생성하기

CREATE USER '계정명'@'호스트명' IDENTIFIED BY '비밀번호';
CREATE USER '계정명'@'localhost' IDENTIFIED BY '비밀번호'; // 로컬만 허용
CREATE USER '계정명'@'%' INDENTIFIED BY '비밀번호'; // 다른 ip도 허용

flush privileges;

rf. 원격 계정 접속 : 로그인 옵션에 [ -h  ip주소 ]를 추가한다.

 

// 원격 pc에서
mysql -h /*접속하려는 ip*/ -u /*계정명*/ -p /*비밀번호*/

 

C. 데이터베이스 계정 권한 설정

📡 MariaDB

- 계정에 테이블에 대한 사용 권한을 부여하는 것이다.

GRANT ALL PRIVILEGES ON 테이블명.* TO '계정명'@'호스트명' IDENTIFIED BY '비밀번호'; // 특정 IP
GRANT ALL PRIVILEGES ON 테이블명.* TO '계정명'@'%' IDENTIFIED BY '비밀번호'; // 전체 IP 대상

FLUSH PRIVILEGES; // 권한 설정사항 FLUSH
더보기

📡 Oracle

> 관리자 아이디로 접속 후
> 권한 부여
grant all                        --- 모든 권한 부여(위험)
grant connect to 계정            --- db 연결 권한
grant resource to 계정           --- db 자원(table, sequence) 생성 권한
grant dba to 계정                --- 시스템 자원 무제한 사용, 다른 사용자 권한 조정 등 강력한 기능에 관한 권한
grant select on 테이블 to 계정   --- 조회(SELECT) 권한 부여
grant create view to 계정        --- 뷰 권한 

> 권한 회수
revoke connect,resource from 계정
revoke select on 테이블 또는 뷰명 from 계정  -- 테이블 또는 뷰 권한 회수

 

D. 데이터베이스 조회

📡 MariaDB

SHOW DATABASES;
더보기

📡 Oracle

SELECT *
FROM ALL_ALL_TABLES;

 

 

[ 참고 및 출처 ]

부트 캠프 강의를 들은 후 정리한 내용입니다.

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=ragew&logNo=30047111788 

https://sgcomputer.tistory.com/247