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(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 시 정상적으로 처리할 수 있었다.