본문 바로가기

프로그래밍/DBMS

[MariaDB] 설치, 설정 , DB 생성, 권한부여

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

마리아 DB 설치 경로 C:/Program Files/MariaDB 10.3/data/my.ini

아래와 같이 수정후

서비스 재시작.


[mysqld]

datadir=C:/Program Files/MariaDB 10.3/data

port=3306

innodb_buffer_pool_size=1529M

init_connect = "SET collation_connection = utf8_general_ci"

init_connect = "SET NAMES utf8"

character-set-server = utf8

collation-server = utf8_general_ci


[client]

port=3306

plugin-dir=C:/Program Files/MariaDB 10.3/lib/plugin

default-character-set = utf8


[mysqldump]

default-character-set = utf8


[mysql]

default-character-set = utf8



----------------------------------------------------------------------

Mysql 서버 로그인

먼저 사용자를 추가하기 위해 로그인이 필요하다.

$ mysql -u root -p
Enter password:


로컬에서 접속 가능한 사용자 추가하기

$ create user '사용자'@'localhost' identified by '비밀번호';

mysql ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 라는 에러가 발생하면 Mysql password policy requirements 에러 validation 제거하여 해결하기 을 참고하자.


DB 권한 부여하기

$ grant all privileges on *.* to '사용자'@'localhost';
$ grant all privileges on DB이름.* to '사용자'@'localhost';

모든 DB에 접근 가능하도록 하려면 *.*, 특정 DB에만 접근 가능하도록 하려면 DB이름으로 지정해주면 된다.


사용자 계정 삭제

$ drop user '사용자'@'localhost';


원격에서 접속 가능한 사용자

원격에서 접속 가능한 사용자를 생성하려면 위애서 localhost만 IP로 바꿔서 입력해주면 된다.


'프로그래밍 > DBMS' 카테고리의 다른 글

[Mysql] 아이피 주소 데이터 유형?  (0) 2019.01.18
[Mysql] 사용자 권한 설정  (0) 2018.09.04
[Mysql]sysdate , now 차이  (0) 2018.06.27
MSSQL, MySQL, Oracle 비교  (0) 2018.05.18
[Mysql] jsp 코딩 작업을 위한 sql문  (0) 2018.03.04