SQL/RDBMS

[MariaDB] 환경 구축 (생성, 삭제, 권한, 백업)

dddzr 2023. 4. 25. 14:58

1. DATABASE 생성

1-1.Window Menu – MySql Client 진입.

 

1-2.DB 변경

     >> USE MYSQL

     - MariaDB [(none)] 에서 MariaDB [(mysql)] 로 변경 됩니다.

 

1-3.DATABASE 생성

     >> CREATE DATABASE [DATABASE명];

 

1-4.DATABASE 조회

     >> SHOW DATABASES

     - 앞에서 생성한 DATABASE 확인할 수 있습니다.

 

2. 계정 생성

2-1. 계정 생성

     >> CREATE USER ‘[USER_NAME]‘@’[호스트]’ IDENTIFIED BY ‘[PASSWORD]’; 

    - 입력한 USER 명으로 새로운 USER 가 생성됩니다. 

 * 호스트에 ‘%’ 는 모든 이라는 의미이다.  

 

2-2. 사용자 계정 조회

     >> SELECT HOST,USER,PASSWORD FROM mysql.user WHERE USER=‘[USER_NAME]‘;

    - 생성된 사용자 계정을 확인할 수 있습니다.

* 얘는 use [DB_NAME]; 입력하여 DB선택 후 사용 아니면 'No database selected'라는 error 뜸.

 

3. 계정 권한 생성

3-1. 권한 부여

     >>일반사용자) GRANT SELECT, INSERT, UPDATE, DELETE, ALTER ON `[DB_NAME]`.* TO `[USER_NAME]`@`[호스트]`;

      >> 관리자) GRANT  ALL PRIVILEGES ON [DB_NAME].* TO `[USER_NAME]`@`[호스트]`;

*DB_NAME에 *넣어도 됨.

*Access Denied for User 'root'@'localhost' (using password: YES)

에러 발생할 경우

> GRANT ALL PRIVILEGES ON *.* TO '본인ID'@'%' IDENTIFIED BY '본인ID 비밀번호'

     * All 은 모든 권한 부여

 

3-2. 계정 별 권한 확인

     >> SELECT * FROM  mysql.user WHERE USER = ‘[USER_NAME]’;

     >> SHOW GRANTS FOR ‘[USER_NAME]'@’[호스트] ';

     - 계정에 관한 권한을 알 수 있다.

 

4. 삭제

     >> DROP USER '[USER_NAME]'@'[호스트] ';

5. 새로고침

    >> FLUSH PRIVILEGES

FLUSH PRIVILEGES 명령은 MySQL에서 사용자 및 권한 설정을 변경한 후, 변경된 설정을 즉시 적용하기 위해 사용됩니다.

MySQL에서 사용자 및 권한 설정은 grant, revoke 등의 명령을 통해 설정할 수 있습니다. 

MySQL 서버는 일정 시간이 지나면 자동으로 변경된 설정을 적용하지만 즉시 변경된 설정을 적용하지 않습니다.

이는 MySQL 서버가 이전에 캐시된 사용자 정보를 사용하고 있기 때문입니다.
FLUSH PRIVILEGES 명령을 실행하면, MySQL 서버는 현재까지의 모든 사용자 및 권한 설정을 메모리에서 지우고, 다시 새로운 설정을 적용합니다.

6. DB copy (백업 & 복원)

*FILE_NAME은 백업할 파일 명으로 아무거나 지정하면 됩니다.

*USER_NAME은 보통 root로 사용

*명령 프롬프트 또는 터미널에서 실행되어야 한다. (아래경로)

6-1. 백업

  • 전체 데이터베이스 백업

1. mysqldump -u [USER_NAME] -p [PASSWORD] -all-databases > [FILE_NAME].sql

2. mysqldump -u [USER_NAME] -p -all-databases > [FILE_NAME].sql 

   [PASSWORD]

 

  • 하나의 데이터베이스 백업

1. mysqldump -u [USER_NAME] -p [PASSWORD] [DB_NAME] > [FILE_NAME].sql

2. mysqldump -u [USER_NAME] -p [DB_NAME] > [FILE_NAME].sql

   [PASSWORD]

 

 

6-2. 복구

  • 전체 데이터베이스 복구

1. mysql -u [USER_NAME] -p [PASSWORD] < [FILE_NAME].sql

2. mysql -u [USER_NAME] -p < [FILE_NAME].sql

   [PASSWORD]

 

  • 일부 데이터베이스 복구

1. mysql -u [USER_NAME] -p [PASSWORD] [DB_NAME] < [FILE_NAME].sql

2. mysql -u [USER_NAME] -p [DB_NAME] < [FILE_NAME].sql

   [PASSWORD]

 

7. option

show variables 명령은 MySQL 데이터베이스 시스템에서 현재 설정되어 있는 시스템 변수들의 값을 보여주는 명령입니다. 이 명령을 실행하면, MySQL 서버가 현재 사용하고 있는 설정 값을 보여줍니다.

 

  • max_connections: MySQL 서버에서 지원하는 최대 동시 접속 수
  • innodb_buffer_pool_size: InnoDB 스토리지 엔진에서 사용하는 버퍼 풀의 크기
  • datadir: 데이터베이스 파일이 저장되는 디렉토리 경로
  • version: MySQL 서버 버전 정보
  • character_set_server: MySQL 서버가 사용하는 기본 문자 집합
  • port: MySQL 서버가 사용하는 포트 번호
  • wait_timeout: MySQL 서버에서 대기 시간 초과가 발생하는 시간
  • thread_cache_size: MySQL 서버에서 스레드 캐시에 저장할 수 있는 최대 스레드 수
  • lower_case_table_names: 대소문자 구분 옵션

 

7-1. DB 대문자 설정

위의 옵션중 대소문자 구분옵션을 설정해보겠습니다.

1. 마리아디비(MariaDB) 설치 폴더에서 "data"폴더의 "my.ini"파일 메모장을 이용하여 오픈합니다.
2. "my.ini"파일을 오픈합니다.
3. [mysql]섹터의 마지막에 "lower_case_table_names = 2"를 추가하고 저장합니다.
[mysqld]
datadir=C:/Program Files/MariaDB 10.5/data
port=3000
innodb_buffer_pool_size=8180M
character-set-server=utf8
lower_case_table_names=2
0 테이블과 데이타베이스의 이름을 대소문자를 구분해서 생성.
SELECT 나 INSERT사용시에도 대소문자를 구분해서 사용해야함.
대소문자를 구별하는 OS 에서만 의미가 있고 Windows/Mac OS X 에는 적용되지 않는다
1 테이블과 DB 이름을 소문자로 생성하며 참조시에는 소문자로 변경하여 처리한다.
기존에 대문자가 포함되어 생성한 테이블과 DB 는 문제가 될 수 있다.
2 테이블과 데이타베이스의 이름을 대소문자를 구분해서 생성한다.
참조시에는 소문자로 변경한다. 대소문자를 구분하지 않는 파일 시스템을 가진 OS(Mac OS X) 에서만 동작한다
 
 
4. WINDOW MENU – 서비스 진입

5. MariaDB 선택 후 다시시작 클릭

 

 

* 프로젝트 설정

application.properties 파일에서 JDBD/계정 설정