프밍일기

우분투 MariaDB 컴파일 설치 본문

Maria DB

우분투 MariaDB 컴파일 설치

스에조theLED 2019. 3. 17. 21:01

얼마전 안드로이드 스마트폰을 가상화 이미지를 이용하여 서버로 사용할 수 있다는것을 알게되어 관련 앱을 설치하여 리눅스 서버 환경을 만들었던 적이 있었다.


https://pmingdiary.tistory.com/32


이걸 가지고 웹서비스를 한번 만들어 볼려고 이것저것 설치하다가 하나 알게된것이 있어 정리해본다.


데이터베이스를 MariaDB를 사용하려고 apt-get 으로 설치도 해보고 바이너리 파일을 받아서 설치도 해보고 했는데... 파일이 실행이 안되고 에러만 난다... 한참의 검색 끝에 알게된 사실은... 사이트에 올라와 있는 배포판 바이너리 파일들이 내가 만들어 놓은 리눅스 환경과 호환이 안된다는 거였다.

스마트폰은 일반적인 PC의 인텔이나 AMD가 아닌 ARM 아키텍처를 사용하여 제조된다. 그러므로 우분투 가상환경을 설치할 때도 당연하게도 아키텍처를 armhf 를 선택하여 설치를 해 놓았는데 이것이 사이트에서 다운받은 바이너리 파일과 호환이 안되는 거였다. 그럼... 끝인가... 안되는건가... 하다가 문득... MariaDB 웹사이트의 다운로드 리스트중 소스가 있다는게 생각이 났다... 그렇다... 마리아DB... 오픈소스다. 바이너리 뿐만 아니라 소스도 공개되어 있고 얼마든지 수정도 할 수 있으며 알아서 컴파일 해서 사용할 수 있는 오픈소스... 그럼... 소스를 받아서 컴파일을 하면 되겠네...? 그렇다... 그러면 되는거다. 그래서 찾아봤다... 많은 분들이 비슷한 내용들을 많이 공유해 주셨는데... 아래의 글이 내 환경이랑 거의 똑같아서 참고했다.


[출처] Ubuntu 18.04 : MariaDB 10.3.12 컴파일, 설치 - 파란크리스마스


링크만 걸지않고 굳이 다시 내용를 작성한건 중간에 잘 안되는 부분이 있어서 그 부분을 수정해서이다.


■ 소스 컴파일을 위한 패키지 설치

user@localhost:~$ sudo apt-get update

    => apt-get update


user@localhost:~$ sudo apt-get install gcc g++ libncurses5-dev libxml2-dev openssl libssl-dev curl libcurl4-openssl-dev libjpeg-dev libpng-dev libfreetype6-dev libsasl2-dev autoconf libncurses5-dev

    => 컴파일 관련 패키지 설치


■ MariaDB 사용자 계정 생성

user@localhost:~$ sudo adduser maria

    => MariaDB용 사용자 계정 생성


■ 소스 다운로드 및 압축풀기

user@localhost:~$ wget https://downloads.mariadb.org/interstitial/mariadb-10.2.22/source/mariadb-10.2.22.tar.gz.

    => 소스 다운로드


user@localhost:~$ tar -zxvf mariadb-10.2.22.tar.gz

    => 압축풀기


■ 컴파일 및 설치

user@localhost:~$ sudo apt-get install cmake

    => cmake 설치


user@localhost:~$ cd mariadb-10.2.22

    => MariaDB 소스 디렉토리로 이동


user@localhost:~/mariadb-10.2.22$ sudo cmake \

-DCMAKE_INSTALL_PREFIX=/usr/local/mariadb \

-DMYSQL_DATADIR=/usr/local/mariadb/data \

-DMYSQL_UNIX_ADDR=/usr/local/mariadb/mysql.sock \

-DSYSCONFDIR=/usr/local/mariadb \

-DMYSQL_TCP_PORT=3306 \

-DMYSQL_USER=mysql \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DWITH_EXTRA_CHARSETS=all \

-DENABLED_LOCAL_INFILE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DDOWNLOAD_BOOST=0 -DWITH_BOOST=./boost

    => cmake 실행


user@localhost:~/mariadb-10.2.22$ sudo make

    => 컴파일(오래 걸린다)


user@localhost:~/mariadb-10.2.22$ sudo make install

    => 설치


■ MariaDB 실행환경 설정

user@localhost:~$ sudo vi /usr/local/mariadb/my.cnf


# my.cnf 파일내용 ----------------------------------------------

[mysqld]

port = 3306

socket = /usr/local/mariadb/mysql.sock

skip-external-locking

key_buffer_size = 256M

max_allowed_packet = 1M

table_open_cache = 256

sort_buffer_size = 1M

read_buffer_size = 1M

read_rnd_buffer_size = 4M

myisam_sort_buffer_size = 64M

thread_cache_size = 8

query_cache_size= 16M

# Try number of CPU's*2 for thread_concurrency

thread_concurrency = 8


init_connect=SET collation_connection = utf8_general_ci

init_connect=SET NAMES utf8

character-set-server = utf8

collation-server = utf8_general_ci

# table_cache=1024

max_connections=2048

max_user_connections=500

max_connect_errors=10000

wait_timeout=300

query_cache_type = 1

query_cache_limit = 5M

slow_query_log

long_query_time=3

# skip-innodb

skip-name-resolve

sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION


[mysql]

default-character-set=utf8


[client]

default-character-set=utf8


■ MariaDB 설치 디렉토리 권한 수정

user@localhost:~$ sudo chown -R root:maria /usr/local/mariadb


user@localhost:~$ sudo chown -R maria:maria /usr/local/mariadb/data


■ MariaDB 데이터베이스 초기화 (maria 계정으로 실행)

maria@localhost:~$ cd /usr/local/mariadb


maria@localhost:/usr/local/mariadb$ ./scripts/mysql_install_db --no-defaults --user=maria --datadir=/usr/local/mariadb/data --basedir=/usr/local/mariadb -v


■ MariaDB 데몬 실행

user@localhost:~$ sudo /usr/local/mariadb/bin/mysqld_safe --user=root &


■ MariaDB 접속 및 root 암호 초기화 (maria 계정으로 실행)

mysql@localhost:/usr/local/mariadb$ ./bin/mysql -u root -p

Enter password:

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 8

Server version: 10.2.22-MariaDB-log Source distribution


Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


MariaDB [(none)]> use mysql

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A


Database changed

MariaDB [mysql]> update user set authentication_string = password('******') where user = 'root';

Query OK, 3 rows affected (0.01 sec)

Rows matched: 3  Changed: 3  Warnings: 0


MariaDB [mysql]> flush privileges;

Query OK, 0 rows affected (0.00 sec)


■ 원격 접근을 위한 준비 (maria 계정으로 실행)

MariaDB [(none)]> create database test;


MariaDB [(none)]> create user 'dbadmin'@'%' identified by '******';


MariaDB [(none)]> GRANT ALL PRIVILEGES ON test.* TO dbadmin@'%';


MariaDB [(none)]> flush privileges;


maria@localhost:/usr/local/mariadb$ ./bin/mysqladmin -u root -p reload


user@localhost:~$ sudo pkill -x mysqld


user@localhost:~$ sudo /usr/local/mariadb/bin/mysqld_safe --user=root &


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


새로운 데이터베이스 생성(test)  =>  새로운 DB 사용자 생성(dbadmin)  =>  생성한 데이터베이스에 사용자 권한 부여  =>  reload 및 재기동


■ MariaDB 데몬 종료

user@localhost:~$ sudo pkill -x mysqld




'Maria DB' 카테고리의 다른 글

Java 에서 MariaDB 연결 및 쿼리실행  (0) 2017.01.22
Comments