MySQL 설치

MySQL 설치 가능 버전 확인

sudo apt update
sudo apt-cache search mysql-server

# 결과 예시)
# mysql-server - MySQL database server (metapackage depending on the latest version)
# mysql-server-5.7 - MySQL database server binaries and system database setup
# mysql-server-core-5.7 - MySQL database server binaries
# default-mysql-server - MySQL database server binaries and system database setup (metapackage)
# default-mysql-server-core - MySQL database server binaries (metapackage)
# mariadb-server-10.1 - MariaDB database server binaries
# mariadb-server-core-10.1 - MariaDB database core server files
# percona-xtradb-cluster-server-5.7 - Percona XtraDB Cluster database server binaries

필요 패키지 설치

sudo apt install build-essential bison \
gcc g++ libncurses5-dev libxml2-dev openssl \
libssl-dev curl libcurl4-openssl-dev libjpeg-dev \
libpng-dev libfreetype6-dev libsasl2-dev \
autoconf libncurses5 libtirpc-dev \
libaio1 libaio-dev libnuma-dev numactl \
libc6-dev ncurses* cmake-gui cmake -y

MySQL 패키지 설치

sudo apt install mysql-server-5.7 \
mysql-server-core-5.7 mysql-client-5.7 \
mysql-client-core-5.7

MySQL 실행 확인

ps -ef |grep mysql
 
# 결과 예시)
# mysql    12037     1  0 02:25 ?        00:00:06 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid

MySQL 접속 설정

접속 인증 방식 및 root 계정 패스워드 설정

# ubuntu에서 auth_socket 플러그인을 이용하여 MySQL에 접속하기 때문에 패스워드 없이 접속 가능
sudo mysql
-- plugin 확인
select user, host, plugin from mysql.user where User='root';

-- 패스워드 방식으로 변경 및 root 계정 패스워드 설정
UPDATE mysql.user SET plugin = 'mysql_native_password', authentication_string = PASSWORD('패스워드') WHERE User = 'root';
commit;
FLUSH PRIVILEGES;

-- 종료 
quit
# 접속 확인
sudo mysql -u root -p

외부 접속 가능한 계정 생성

# MySQL 접속
sudo mysql -u root -p
-- 계정 생성
create user '계정'@'%' identified by '패스워드';
 
-- 확인
SELECT Host, User, authentication_string From mysql.user;

MySQL port 설정

# mysqld.cnf 설정 변경
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
# 아래 부분 주석 처리
#bind-address           = 127.0.0.1

# MySQL 재시작
sudo systemctl restart mysql

# 열린 포트 확인
netstat -ntlp
# 확인
# Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
# tcp6       0      0 :::3306                 :::*                    LISTEN      -

참고 사항

DB 서버가 프라이빗 서브넷에 위치하고, iptable로 port forwarding 하는 경우

# 퍼블릭 서브넷 서버 접속
# iptables 수정
cd /etc/sysconfig
sudo vim iptables

# 아래 내용 추가
-A PREROUTING -i eth0 -p tcp -m tcp --dport {포트번호} -j DNAT --to-destination {DB서버 IP주소}:3306

#-A PREROUTING: PREROUTING 체인에 새로운 규칙을 추가한다
#-i: 입력 인터페이스
#-p: 특정 프로토콜과 매칭
#-m: 특정 모듈과의 매칭
#--dport: 목적지 port
#-j: 규칙에 맞는 패킷을 어떻게 처리할 것인지 명시
#DNAT: 외부에서 방화벽(외부IP)으로 요청되는 주소를 내부사설 IP로 변환
#--to-destination: DNAT에 의해 설정될 도착지

# iptables 설정 저장
iptables-save > iptables.save
 
# iptables
sudo systemctl restart iptables

카테고리:

업데이트:

댓글남기기