2017년 9월 14일 목요일

MariaDB 설치, 세팅, database생성, 권한부여

1. MariaDB를 설치

mariadb-10.2.8-winx64.msi를 받아서 설치한다.

2. MariaDB에 로그인 및 계정 생성

시작 > 모든 프로그램 > MariaDB 10.1 > Command Prompt 오른클릭 > 자세히 > 관리자 권한으로 실행

root 유저로 접속
mysql -uroot -p[비번]

임의의 계정 생성
create user 'portal' identified by '비번';

윈도우에서와 리눅스에서는 계정 생성시 '@도메인'을 붙이고 안붙이고의 차이가 있는 모양임.
지금은 윈도우에서 계정 생성한 부분의 예임

3. DB의 캐릭터셋 조회 및 설정

쿼리로 캐릭터 셋을 조회하면 아래처럼 결과가 나왔다.

show variables like 'c%';

+--------------------------+-----------------------------------------------+
| Variable_name            | Value                                         |
+--------------------------+-----------------------------------------------+
| character_set_client     | euckr                                          |
| character_set_connection | euckr                                          |
| character_set_database   | utf8                                          |
| character_set_filesystem | binary                                        |
| character_set_results    | euckr                                          |
| character_set_server     | utf8                                          |
| character_set_system     | utf8                                          |
| character_sets_dir       | C:\Program Files\MariaDB 10.2\share\charsets\ |
| check_constraint_checks  | ON                                            |
| collation_connection     | euckr_korean_ci                               |
| collation_database       | utf8_general_ci                               |
| collation_server         | utf8_general_ci                               |
| completion_type          | NO_CHAIN                                      |
| concurrent_insert        | AUTO                                          |
| connect_timeout          | 10                                            |
+--------------------------+-----------------------------------------------+

utf8로 모두 변경하도록 한다.
C:\Program Files\MariaDB 10.2\data\my.ini 파일을 열어 아래 사항을 추가한다.

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqldump]
default-character-set=utf8

[mysqld]
init_connect="SET collation_connection = utf8_general_ci"
init-connect='SET NAMES utf8'
character-set-server=utf8
collation-server = utf8_general_ci

설정 변경 후에는 MariaDB 재 로그인 후 쿼리가 정상 작동되었다.
윈도우의 서비스를 열어 MariaDB(MySql)를 재구동 후 다시 캐릭터 셋을 조회하면 아래처럼 결과가 나왔다

+--------------------------+-----------------------------------------------+
| Variable_name            | Value                                         |
+--------------------------+-----------------------------------------------+
| character_set_client     | utf8                                          |
| character_set_connection | utf8                                          |
| character_set_database   | utf8                                          |
| character_set_filesystem | binary                                        |
| character_set_results    | utf8                                          |
| character_set_server     | utf8                                          |
| character_set_system     | utf8                                          |
| character_sets_dir       | C:\Program Files\MariaDB 10.2\share\charsets\ |
| check_constraint_checks  | ON                                            |
| collation_connection     | utf8_general_ci                               |
| collation_database       | utf8_general_ci                               |
| collation_server         | utf8_unicode_ci                               |
| completion_type          | NO_CHAIN                                      |
| concurrent_insert        | AUTO                                          |
| connect_timeout          | 10                                            |
+--------------------------+-----------------------------------------------+

4. 데이터베이스 생성

기본 생성문
create database egov_portal;

아래의 쿼리로 데이터베이스의 캐릭터셋을 확인할 수 있다.
select default_character_set_name from information_schema.schemata where schema_name = "egov_portal";

5. 유저에게 데이터베이스 권한 부여

grant all on eqov_portal.* to 'portal';

이때 스키마에 _(언더바)가 들어간 경우 관리 툴 인 HeidiSQL에서 스키마 이동이 잘 되지 않는 문제가 있었다.
그래서 HeidiSQL의 기능에서 직접 해 보았다.
상단 아이콘 중 [사용자 인증 및 권한관리] > 사용자 선택 후 [접근허용]에서 [객체추가] 해서 권한을 부여함.
이렇게 하니 [eqov_portal]가 [eqov\_portal]로 표시되며 잘 작동되었다.

6. 한글 insert 문제

Command Prompt에서 한글이 섞인 데이터를 insert시 아래와 같은 에러를 내며 데이터가 인서트 되지 않았다. DB와, Table 생성시 캐릭터 셋을 지정하면 문제가 없다는 내용을 여럿 접했는데 잘 되지 않았다.

ERROR 1366 (22007): Incorrect string value: '\xC0\xFC\xC0\xDA\xC1\xA4...' for column 'CL_CODE_NM' at row 1

이 문제는 MariaDB Command Prompt에서의 한글 문제로 생각되며 별도의 tool(HeidiSQL_9.4.0.5125_Setup.exe)을 사용하여 insert 시 정상적으로 처리할 수 있었다.