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';
이제 사용자에게 특정 데이터베이스의 모든 권한을 부여해보자.
GRANT ALL ON testdb.* to 'noma'@'localhost';
다시 noma의 권한을 보자.
SHOW GRANTS FOR 'noma'@'localhost';
이제 사용자에게 주어진 특정 데이터베이스의 모든 권한을 삭제하는 코드를 입력해보자.
REVOKE ALL ON testdb.* from 'noma'@'localhost';
다시 위와 같이 show grants를 하면 testdb에 접근하는 권한이 사라진 것을 확인할 수 있다.
'코딩 > 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 |