📌 인스턴스란? = 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하는 언어
// 아래와 같이 테이블스페이스를 만들지 않으면 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. 원격 계정 접속 : 로그인 옵션에 [ -hip주소 ]를 추가한다.
// 원격 pc에서
mysql -h /*접속하려는 ip*/ -u /*계정명*/ -p /*비밀번호*/
GRANT ALL PRIVILEGES ON 테이블명.* TO '계정명'@'호스트명' IDENTIFIED BY '비밀번호'; // 특정 IP
GRANT ALL PRIVILEGES ON 테이블명.* TO '계정명'@'%' IDENTIFIED BY '비밀번호'; // 전체 IP 대상
FLUSH PRIVILEGES; // 권한 설정사항 FLUSH
> 관리자 아이디로 접속 후
> 권한 부여
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 계정 -- 테이블 또는 뷰 권한 회수