Centos7 MariaDB10.4 binary 설치
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
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 ]
Memo