RDBMS는 인스턴스와 그 인스턴스에 접근하기 위한 계정으로 이루어진다.
-> 인스턴스와 계정 모두 SQL 언어로 생성하고 관리할 수 있다.
SQL은 DBMS의 데이터를 관리하기 위해 설계된 구조화된 질의어를 말하며, 목적에 따라 DDL, DML, DCL로 구분한다.
CREATE DATABASE 인스턴스명; DROP DATABASE 인스턴스명;
MariaDB [(none)]> create database db1;
Query OK, 1 row affected (0.020 sec)
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| db1 |
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
6 rows in set (0.012 sec)
인스턴스 이름은 중복될 수 없음 주의!
인스턴스 삭제 역시 반드시 필요한 상황에서만 해야한다.
use mysql;
select Host, User, Password from user;
ERROR 1046 (3D000): No database selected
이런 에러 난다면 use mysql;
안 해줘서 그런 것이다.
// 로컬 호스트에서만 접속 허용
CREATE USER '계정명'@'localhost' IDENTIFIED BY '패스워드';
// 모든 IP에 접속 허용
CREATE USER '계정명'@'%' IDENTIFIED BY '패스워드';
// 생성하고 난 후
FLUSH PRIVILEGES;
FLUSH 명령어를 더 알고 싶다면 [mariadb] flush 명령어 정리 참고
계정으로 DB에 접속하려면 mysql -u 계정명 -p
하면 된다.
❯ mysql -u testuser1 -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 11.1.2-MariaDB Homebrew
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| test |
+--------------------+
2 rows in set (0.006 sec)
show databases 결과를 보면, testuser1가 갖고 있는 권한으로는 information_schema와 test 인스턴스에만 접근할 수 있다는 걸 확인할 수 있다.
GRANT ALL PRIVILEGES ON 인스턴스명.* TO '계정명'@'localhost' IDENTIFIED BY '패스워드';
GRANT ALL PRIVILEGES ON 인스턴스명.* TO '계정명'@'%' IDENTIFIED BY '패스워드';
FLUSH PRIVILEGES;
DROP USER '계정명';