본문 바로가기

IT tech/SQL

Apache+PHP - MariaDB 연동

반응형
SMALL

환경: CentOS 7 (WEB서버, DB서버 분리된 상태)

WEB (Apache + PHP) // apache - 2.4.6 버전 , php - 7.4.33 버전

DB (MariaDB) mariadb - 10.4.27 버전

우선 WEB서버부터 설정하겠다.

apache 설치

yum install httpd

php 설치

  1. 저장소 설치
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum -y install epel-release yum-utils

2. 원하는 버전 php 활성화

yum-config-manager --enable remi-php74

3. php 설치& 기타 php 패키지 설치

yum -y install php
yum -y install php-fpm
yum -y install php-cli php-redis php-brotli php-intl php-gd php-gmp php-imap php-bcmath php-interbase php-json php-mbstring php-mysqlnd php-odbc php-opcache php-memcached php-tidy php-pdo php-pdo-dblib php-pear php-pgsql php-process php-pecl-apcu php-pecl-geoip php-pecl-imagick php-pecl-hrtime php-pecl-json php-pecl-memcache php-pecl-mongodb php-pecl-rar php-pecl-pq php-pecl-redis4 php-pecl-yaml php-pecl-zip

/var/www/html/index.html 설정

<html>
<body>
<h1>
test!!
</h1>
</body>
</html>

​<?php
echo "Maria DB 연결 테스트<br>";
$db = mysqli_connect("10.1.3.132","root","password!!","mysql");
if($db){
echo "connect: success<br>";
}else{
echo "connect: failure<br>";
}
$result = mysqli_query($db,'SELECT VERSION() as VERSION');
$data = mysqli_fetch_assoc($result);
echo $data['VERSION'];
?>

10.1.3.132 = 연동할 DB서버의 IP

root = mariadb 접속/연동 될 유저

password!! = mariadb의 user를 root로 접속할 시의 패스워드

mysql = mariadb 내 'mysql'이라는 데이터베이스에 연동

==========================================================================

이번엔 DB서버의 설정이다.

DB서버에 mariadb를 설치하겠다. (10.4.27 버전)

  1. yum 저장소 추가
# /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

2. MariaDB 설치

yum install MariaDB

3. MariaDB 시작, 패스워드 변경

systemctl start mariadb
/usr/bin/mysqladmin -u root password

4. netstat 및 iptables 확인

# netstat -ntlp
tcp6 0 0 :::3306 :::* LISTEN 20849/mysqld
# iptables -nL
Chain RH-Firewall-1-INPUT (2 references)
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:3306

netstat 에서 돌아가고 있어도 iptables에서 3306 포트가 열려있지 않으면 서버 간 연동이 제대로 되지 않을 수 있다. 방화벽에서 3306 포트를 열어주자.

우선 mariadb에 접속하여 db에 접근 가능한 유저 목록을 살펴본다.

#mysql -u root -p
MariaDB [(none)]> use mysql
MariaDB [mysql]> select host, user, password from user;
+---------------------+-------------------+-------------------------------------------------------------------------+
| Host                   | User               | Password                                                                        |
+---------------------+-------------------+-------------------------------------------------------------------------+
| localhost            | mariadb.sys   |                                                                                         |
| localhost            | root                | *1AF449DA4FB794A76795519E20E4A04CA2080A68  |
| localhost            | mysql             | invalid                                                                              |
| localhost            |                       |                                                                                         
+---------------------+-------------------+--------------------------------------------------------------------------+
4 rows in set (0.002 sec)

현재 상태는 localhost에서만 접근 가능한 상태이다.

localhost가 아닌, 모든 IP에서 접근 가능할 수 있게 설정해보겠다.

MariaDB [mysql]> grant all privileges on *.* to 'root'@'%' identified by 'password!!';
MariaDB [mysql]> flush privileges;

다시 접근 가능한 유저목록을 살펴본다.

MariaDB [mysql]> select host, user, password from user;
+-------------------+------------------+-------------------------------------------------------------------------+
| Host                | User              | Password                                                                        |
+-------------------+------------------+-------------------------------------------------------------------------+
| localhost         | mariadb.sys   |                                                                                        |
| localhost         | root                | *1AF449DA4FB794A76795519E20E4A04CA2080A68 |
| localhost         | mysql             | invalid                                                                             |
| localhost         |                       |                                                                                         |
| %                    | root                | *1AF449DA4FB794A76795519E20E4A04CA2080A68 |
+-------------------+------------------+-------------------------------------------------------------------------+
5 rows in set (0.002 sec)

 

위와 같이 외부 IP에서도 DB접속이 가능해졌다.

이제 대략적인 WEB -DB 연동 준비를 마쳤으니, 테스트해본다.

주소창에

http://WEB서버의 IP/index.html 이라고 쳤을때, 다음과 같이 나오면 연동 성공이다.

반응형
LIST