MariaDB (tar.gz) 직접 설치하기

2023. 4. 29. 02:22리눅스 실제 사용 팁/Maria DB

https://mariadb.org/download

 

Download MariaDB Server - MariaDB.org

REST API Release Schedule Reporting Bugs … Continue reading "Download MariaDB Server"

mariadb.org

1. 바이너리 배포판(tarball - tar.gz, tgz, tar.bz2, tbz, tar.Z, ...) 을 다운로드한다.

2. 적당한 위치에 압축을 푼다. (INSTALL-BINARY 문서에서는 /usr/local/ 밑에 설치할 것을 권한다. that's linux way~)

$ cd /usr/local
---
(설명: /usr/local 밑에 설치한다.)


$ sudo tar xzf (다운로드한 경로)/mariadb-10.11.2-linux-systemd-x86_64.tar.gz

$ sudo mv mariadb-10.11.2-linux-systemd-x86_64 mariadb
---
(설명: 생성된 디렉토리명을 짧게 mariadb 로 변경한다)

 

압축을 풀면 아래와 같이 구성되어 있다. 아무래도 mysql 에서 파생된 프로젝트이다 보니 디렉토리 이름에 'mysql' 이 들어 있다.

(bin/ 아래에도 실행바이너리가 'mysql*' 에서 쓰이는 명칭으로 심볼릭링크가 만들어져 있다.)


본 게시글에서는 mysql 을 mariadb 으로 대체한다.

왜냐하면 내가 설치한 DB 는 mysql 이 아니고 mariadb 이기 때문이다.

(둘이 비슷하다고 한들, 내가 원하는 건 mariadb 니까)

↑ 저렇게 외치고 무작정 죄다 바꿨는데.., 실행스크립트에서도 바꿔야 할 부분이 남아 있다.

(안고쳐도 문제가 되진 않는다. 단지 오류 메시지가 떠서 찝찝할 뿐)

예를 들면, bin/ 아래의 mariadbd-safe 파일이 쉘스크립트다. 여기서 chown mysql 을 실행하기 때문에 mysql 계정이 없으면 chown 오류가 뜬다.

$ sudo ./bin/mariadbd-safe --user=mariadb
[sudo] user 암호: 
230430 08:39:01 mysqld_safe Logging to '/home/user/__Applications/mariadb/data/jhiz.err'.
chown: 부적절한 그룹: `mariadb:mysql'
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 요것 때문에

vi 편집기에서

:%s/'mysql'/'mariadb'/gc

으로 'mysql' 를 'mariadb' 로 고쳐준다.

그리고 '/usr/local/mysql' 로 되어 있는 부분을 본인이 설치한 경로로 고친다.

있는대로 쓸 걸... 괜히 고집부리려다 뻘짓하는 건가? ;-(

COPYING
CREDITS
INSTALL-BINARY  <-------- 본 게시글의 기본은 여기서 가져왔다. 설치문서
README-wsrep
README.md
THIRDPARTY
bin/
data/
docs/
include/
lib/
man/
mysql-test/
scripts/
share/
sql-bench/
support-files/

3. mariadb 그룹과 서비스 전용계정을 생성한다.

$ sudo groupadd mariadb
---
(결과) /etc/group 파일에 mariadb 그룹이 추가된다.


$ sudo useradd --system -g mariadb mariadb
---
(결과 1) /etc/passwd 파일에 mariadb 계정이 추가되며
(결과 2) /etc/passwd 파일에서 mariadb 계정행 맨 뒤에 (서비스 계정으로서) mariadb 이 추가된다.

---< 확인용 >---
$ grep mariadb /etc/group
mariadb:x:1002:

$ grep mariadb /etc/passwd
mariadb:x:999:1002::/home/mariadb:/bin/sh
---
(설명: '--system' 때문에 /home 밑에 계정디렉토리가 안생기는데 설정파일에는 들어간다.
       일부러 '--no-create-home' 도 시도해봤는데 여전하더라. 커맨드 버그일까?)

 

4. mariadb 디렉토리 아래의 전체 리소스의 계정 소유권과 그룹을 앞서 만든 mariadb 으로 변경한다.

$ cd mariadb
---
반드시 mariadb 디렉토리로 이동해야 한다.
왜냐하면 scripts/ 밑의 설치 스크립트에서 현재 작업경로에 data (<- DB 저장소) 를 설치하기 때문이다.

$ sudo chown -R mariadb:mariadb mariadb
---
맨뒤의 mariadb 은 디렉토리 이름이다. 헷갈리지 않길!

다음 명령들의 축약형이다 : 
문서에는 이렇게 쓰여 있다.

chown -R mariadb .
chgrp -R mariadb .

5. 설치 스크립트를 실행한다.

$ sudo ./scripts/mariadb-install-db --user=mariadb
---
(결과)
현재 작업디렉토리 밑에 'data' 디렉토리를 생성한다. 여기에 각종 시스템 테이블이 들어간다.
대부분의 리눅스 배포판의 패키지에서 처리하는 부분이겠다. support-files 안에 들어있는
mariadb.service 파일을 적절한 위치에 설치하면 시스템 부팅 시 서비스로 자동실행된다(고 한다).

전권을 가진 계정 2개가 생성되는데 1개는 root@localhost 인데 패스워드가 설정되지 않은 상태로
제공된다. `sudo mariadb` 로 Maria DB 를 실행할 때 쓰일 수 있단다.

다른 1개는 mariadb@localhost 이며 이것 역시도 패스워드를 설정하지 않은 채로 제공되며
mariadb 계정으로 접속할 때 쓸 수 있다. 접속한 후에 패스워드를 설정하면 `sudo ` 를 통하지 않고도
로그인할 수 있단다. (근데 그게 그것 아닌가? 음... 우분투는 그렇겠지....)

https://mariadb.com/kb (Maria DB 에 관한 문서를 여기서 참고하기 바란다)

DB 저장소를 기본값이 아닌 다른 곳에 설치한 경우? --datadir='저장소 경로' 을 통해
DB 를 시작할 수 있다.

예) /usr/local/mariadb/bin/mariadbd-safe --datadir='/home/test/DB_DATA'

bin/mariadb-test 명령으로 DB 를 테스트할 수 있단다.

 

6. mariadb 디렉토리 안 리소스들의 소유권을 root 로 전환한다.

$ sudo chown root .
---
(설명) mariadb 디렉토리를 root 소유권에 넣음으로써 일반 사용자 계정에서 망가뜨리지 못하게 한다.

 

7. mariadb 디렉토리 안의 data 디렉토리만 mariadb 소유권으로 전환한다.

$ sudo chown -R mariadb ./data
---
(설명) data 디렉토리만 별도로 소유권을 mysql 로 지정한다.

설치 끝!

 

참고할만한 리소스)

시스템에 서비스로 등록하려는 경우 supported-files 에 있는 파일을 참고하면 된다.

$ tree supported-files
supported-files
├── binary-configure
├── magic
├── mariadb.logrotate
├── mini-benchmark
├── mysql.server
├── mysqld_multi.server
├── policy
│   ├── apparmor
│   │   ├── README
│   │   ├── usr.sbin.mysqld
│   │   └── usr.sbin.mysqld.local
│   └── selinux
│       ├── README
│       ├── mariadb-server.fc
│       ├── mariadb-server.te
│       ├── mariadb.pp
│       └── mariadb.te
├── systemd
│   ├── mariadb-extra@.socket
│   ├── mariadb.service
│   ├── mariadb@.service
│   ├── mariadb@.socket
│   ├── mysql.service -> ./mariadb.service
│   ├── mysqld.service -> ./mariadb.service
│   └── use_galera_new_cluster.conf
├── wsrep.cnf
└── wsrep_notify

5 directories, 23 files

실행 방법)

$ sudo ./bin/mariadbd-safe --user=mariadb &
---

경로 밖에서 실행하는 경우라면 경로를 모두 지정하면 되겠다. 이렇게 :
$ sudo /usr/local/mariadb/bin/mariadbd-safe --user=mariadb &