간만에 일하는데 데이터베이스까지 생성하는걸 해보네.. Mysql이랑 다를게 없겠지만 혹시 모르니 적어놔야함
대충 만들면 되것지~ 하면서 생성을 하려는데 원체 오래전에 생성해봤어서(대부분 애들한테 시켜서...;;) 생성하는게 헷갈리더라는.. 명령어도 기억이 안나서 주섬주섬 찾아보고..
마리아DB에서 데이터베이스 생성 기본
새로운 데이터베이스(Database)를 생성하려면 먼저 루트 또는 권한이 있는 사용자로 로그인해야 SQL 문으로 새 데이터베이스를 만들 수 있다.
CREATE DATABASE testdb;
'testdb'라는 이름의 데이터베이스가 생성됨
문자셋과 콜레이션 설정
데이터베이스를 생성할 때 문자셋(Character Set)과 콜레이션(Collation)을 지정하는 것은 매우 중요하다.
특히 다국어를 지원하거나 정렬 기준이 중요한 서비스일 경우에는 훨씬 중요
옵션 | 설명 |
---|---|
CHARACTER SET utf8mb4 | 가장 권장되는 다국어 문자셋 |
COLLATE utf8mb4_general_ci | 대소문자 구분 없는 일반 정렬 |
적용 예시
CREATE DATABASE testdb
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;
사용자 계정 및 권한 설정
데이터베이스를 만들었으니 이제 접근할 사용자와 권한을 지정
- 사용자 생성:
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';
- 권한 부여:
GRANT ALL PRIVILEGES ON testdb.* TO 'myuser'@'localhost';
- 변경 사항 적용:
FLUSH PRIVILEGES;
명령줄로 DB 생성
실제 터미널 환경에서 DB를 만드는 명령을 순서대로 입력해보자(루트 계정으로 접속해서 데이터베이스와 사용자, 권한을 한 번에 구성하는 예)
$ mysql -u root -p
> CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
> CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';
> GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';
> FLUSH PRIVILEGES;
GUI 툴로 DB 만드는 방법
명령어가 익숙하지 않거나 시각적으로 관리하고 싶다면 HeidiSQL, DBeaver, phpMyAdmin 같은 GUI 툴을 활용할 수 있다.
툴 이름 | 특징 |
---|---|
HeidiSQL | 간단한 인터페이스, 윈도우에 최적화 |
DBeaver | 다양한 DB 관리, 크로스플랫폼 지원 |
phpMyAdmin | 웹 기반 인터페이스, 설치형 관리툴 |
DB 생성 후 체크리스트
데이터베이스를 만든 뒤, 실수로 빠뜨리는 설정들이 꽤 많으니 다음 항목들 정도는 항상 확인해야함
- 문자셋/콜레이션이 올바르게 적용됐는가?
- 접근 권한이 정확한지 확인했는가?
- 보안상 사용자에게 최소 권한만 줬는가?
- 백업 스크립트는 준비되어 있는가?
기본 SQL 명령어는 동일하지만, 세부 설정이나 버전에 따라 약간의 차이는 존재할 수 있다.
이모지와 다양한 언어를 지원하기 위해 추천. 특히 웹서비스에서는 utf8mb4가 표준처럼 사용되는 중
가능하긴 하지만 추천되지 않는다. 운영체제나 툴 호환성을 고려해 소문자와 언더스코어 조합이 가장 안전
기존 DB가 존재할 경우 에러가 발생하지만 삭제 후 다시 생성하거나 IF NOT EXISTS
옵션을 사용하면 있는지 확인하고 없을 경우에만 생성됨
기본 명령은 동일하지만, 일부 고급 옵션(예: 인코딩 디폴트값 등)은 버전에 따라 차이가 있을 수 있다.
'공부방 > DataBase' 카테고리의 다른 글
PL/SQL PLS-00103 오류 해결 방법 (0) | 2025.03.14 |
---|---|
[Oracle] DB링크를 통한 원격 테이블 조회 방법 (0) | 2025.02.01 |
[Oracle] 데이터베이스에서 문자열 뒤에서 자르기(RIGHT) (0) | 2025.01.09 |
[MariaDB] ADD COLUMN 사용법 (0) | 2025.01.03 |
Subquery returns more than 1 row (0) | 2024.12.19 |