리눅스/Centos7 APM

Centos7 MariaDB10.4 binary 설치

paletteCode 2020. 12. 20. 20:48

1. 필요한 패키지 설치

# yum -y install wget gcc-c++ openssl-devel ncurses-devel gnutls-devel libxml2-devel libcurl-devel bison

2. CMake 설치

[root@localhost ~]# wget https://github.com/Kitware/CMake/releases/download/v3.18.4/cmake-3.18.4.tar.gz
# tar xvfz cmake-3.18.4.tar.gz
# cd cmake-3.18.4
[root@localhost cmake-3.18.4]# ./bootstrap --prefix=/usr/local/cmake
# gmake -j 4
# make install -j 4
# vi /root/.bash_profile
	. . .
	PATH=$PATH:$HOME/bin:/usr/local/cmake/bin
	. . .
:wq(저장 후 나가기)
# source /root/.bash_profile
# cd..

3. MariaDB파일 다운로드 및 압축 풀기

[root@localhost ~]# wget https://mirror.yongbok.net/mariadb//mariadb-10.4.17/source/mariadb-10.4.17.tar.gz
# tar xvfz mariadb-10.4.17.tar.gz

4. MariaDB계정 추가 및 Data디렉터리 생성

# adduser -M -s /bin/false mysql
# mkdir -p /home/mariadb/data /home/mariadb/log
# chown -R mysql:mysql /home/mariadb
# chmod 700 /home/mariadb/data

Memo

adduser -M -s /bin/false mysql

-M : 홈 디렉터리 생성안함.

-s /bin/false : 쉘 부여하지 않음(시스템에서만 사용하기 위해 로그인 차단)

5. MariaDB 설치

* 엔진은 설치목적에 따라 선택하세요.(엔진을 전부 설치 했더니 약 15GB 소요됩니다.)

# cd mariadb-10.4.17

[root@localhost mariadb-10.4.17]# cmake \
-DWITH_READLINE=1 \
-DWITH_SSL=bundled \
-DWITH_ZLIB=system \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_ARIA_STORAGE_ENGINE=1 \
-DWITH_XTRADB_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_FEDERATEDX_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DINSTALL_SYSCONFDIR=/etc \
-DINSTALL_SYSCONF2DIR=/etc/my.cnf.d \
-DCMAKE_INSTALL_PREFIX=/usr/local/mariadb \
-DMYSQL_DATADIR=/home/mariadb/data \
-DMYSQL_UNIX_ADDR=/usr/local/mariadb/socket/mysql.socket

# make -j 4
# make install -j 4

Memo

-DWITH_SSL=bundled

쿼리문과 데이터를 암호화 해주는 기능

-DWITH_ZLIB=system

문자열 압축시 사용

-DENABLED_LOCAL_INFILE=1

SQL파일 로드 가능 설정

-DWITH_ARIA_STORAGE_ENGINE=1

MylSAM보완 엔진(트랜젝션, 페이지 캐시 등 지원)

-DWITH_XTRADB_STORAGE_ENGINE=1

고가용성지원 엔진, DB복제와 DB동기화기능 지원

-DWITH_INNOBASE_STORAGE_ENGINE=1

대표엔진으로 데이터무결성 및 트랜잭션 지원

-DWITH_PARTITION_STORAGE_ENGINE=1

테이블 분할할 때 사용(샤딩)

-DWITH_BLACKHOLE_STORAGE_ENGINE=1

장비교체등으로 슬레이브(보조서버)에 데이터를 전달하고자하는 경우 사용

-DWITH_FEDERATEDX_STORAGE_ENGINE=1

대용량 데이터를 이관할 때 사용

-DWITH_ARCHIVE_STORAGE_ENGINE=1

대용량 히스토리 데이터를 압축 저장하는 경우 사용

6. MariaDB 설정

# chmod 755 /usr/local/mariadb
# chown -R mysql:mysql /usr/local/mariadb

# /usr/local/mariadb/scripts/mysql_install_db \
--defaults-file=/etc/my.cnf \
--user=mysql \
--basedir=/usr/local/mariadb \
--datadir=/home/mariadb/data \
--explicit_defaults_for_timestamp=on

Memo

- scripts디렉터리에서 mysql_install_db 실행시 오류나므로 scripts상위 디렉터리에서 해야합니다

# vi /root/.bash_profile
	. . .
	PATH=$PATH:$HOME/bin:/usr/local/cmake/bin:/usr/local/mariadb/bin
	. . .
:wq (저장 후 나가기)
# source /root/.bash_profile

7. MariaDB daemon등록 및 시작

# cp -arp /usr/local/mariadb/support-files/mysql.server /etc/init.d/mariadb
# chkconfig mariadb on
# chkconfig --list mariadb
# systemctl start mariadb
# mysql

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.4.17-MariaDB 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)]>

8. MariaDB 계정 설정

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]> SELECT Host, User, Password FROM user;
+-----------------------+-------------+----------+
| Host                  | User        | Password |
+-----------------------+-------------+----------+
| localhost             | mariadb.sys |          |
| localhost             | root        | invalid  |
| localhost             | mysql       | invalid  |
| localhost             |             |          |
| localhost.localdomain |             |          |
+-----------------------+-------------+----------+
5 rows in set (0.001 sec)

MariaDB [mysql]> DELETE FROM user WHERE User=’‘;
Query OK, 2 rows affected (0.001 sec)

MariaDB [mysql]> GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%‘ IDENTIFIED BY ’패스워드‘;
Query OK, 1 rows affected (0.001 sec)

MariaDB [mysql]> DELETE FROM user WHERE Host=“localhost” AND User=’root‘;
Query OK, 1 row affected (0.002 sec)

MariaDB [mysql]> quit

Memo

- GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '패스워드';

- root계정 추가하면서 모든 아이피로 접속가능(%)과 패스워드설정, 모든 권한모든 DB모든 테이블 접근 권한 부여

- 10.4이상부터는 테이블이 아니고 뷰로 변경.

그래서 UPDATE 쿼리문으로 하면 ERROR 1356 (HY000): View 'mysql.user' references invalid

table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them 에러 발생

9. MariaDB 방화벽 설정 및 외부접속

9-1. firewalld 방화벽 사용 시

# firewall-cmd --permanent --zone=public --add-port=3306/tcp
# firewall-cmd --reload

9-2. iptables 방화벽 사용 시

# iptables -I INPUT -s 0.0.0.0/0 -d 서버아이피 -p tcp --dport 3306 -j ACCEPT
# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]