본문 바로가기
DB

CentOS 7에서 MySQL 8 멀티 인스턴스 설치

by 수앙 2022. 8. 28.

CentOS 7 환경 MySQL 8 버전 3306, 3316 포트로 멀티 설치

1. 사전 작업

root 계정 로그인

# [필요 유틸 설치]
yum install wget vim -y

# [mysql 계정, 그룹 생성]
groupadd mysql
useradd mysql -g mysql

# [MySQL 8 다운로드 및 설정]
mkdir /opt/mysql
cd /opt/mysql
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.30-el7-x86_64.tar.gz
cd /usr/local/
tar xzvf /opt/mysql/mysql-8.0.30-el7-x86_64.tar.gz
ln -s /usr/local/mysql-8.0.30-el7-x86_64/ mysql
ln -s /usr/local/mysql/bin/mysqld /usr/bin

vi ~/.bash_profile
# export $PATH 선언 전줄에 아래 한 줄 추가
PATH=$PATH:/usr/local/mysql/bin

source .bash_profile

# [MySQL 8 설치 전 설정]
mkdir -p /opt/mysql/{3306,3316}/data
mkdir -p /opt/mysql/{3306,3316}/log
chown -R mysql:mysql /opt/mysql

 

2. MySQL 8 3306 포트로 설치

# [MySQL 설치]
# root -> mysql로 계정 변경
su mysql

cat <<EOF > /opt/mysql/3306/my.cnf
[mysqld]

port=3306
basedir=/usr/local/mysql

datadir=/opt/mysql/3306/data
socket=/tmp/mysql_3306.sock

log-error=/opt/mysql/3306/log/mysql_3306.log
pid-file=/opt/mysql/3306/mysqld_3306.pid
EOF

/usr/local/mysql/bin/mysqld --defaults-file=/opt/mysql/3306/my.cnf --initialize --basedir=/usr/local/mysql --datadir=/opt/mysql/3306/data

# [MySQL 실행]
/usr/local/mysql/bin/mysqld --defaults-file=/opt/mysql/3306/my.cnf --user=mysql &

# 아래 명령어를 실행하면 패스워드를 묻는데 초기 패스워드는 my.cnf에 설정한
# /opt/mysql/3306/log/mysql_3306.log 로그에 나와있음
# 예) ... [Server] A temporary password is generated for root@localhost: 패스워드
mysql -S /tmp/mysql_3306.sock -p

alter user 'root'@'localhost' identified with mysql_native_password by '변경할 패스워드';

flush privileges;

# [MySQL 종료]
# 아래 명령어를 실행하고 좀 전에 변경한 패스워드 입력
/usr/local/mysql/bin/mysqladmin -h 127.0.0.1 -u root -p -P 3306 shutdown

 

3. MySQL 8 3316 포트로 설치

# [MySQL 설치]
# root -> mysql로 계정 변경
su mysql

cat <<EOF > /opt/mysql/3316/my.cnf
[mysqld]

port=3316
basedir=/usr/local/mysql

datadir=/opt/mysql/3316/data
socket=/tmp/mysql_3316.sock

log-error=/opt/mysql/3316/log/mysql_3316.log
pid-file=/opt/mysql/3316/mysqld_3316.pid
EOF

/usr/local/mysql/bin/mysqld --defaults-file=/opt/mysql/3316/my.cnf --initialize --basedir=/usr/local/mysql --datadir=/opt/mysql/3316/data

# [MySQL 실행]
/usr/local/mysql/bin/mysqld --defaults-file=/opt/mysql/3316/my.cnf --user=mysql &

# 아래 명령어를 실행하면 패스워드를 묻는데 초기 패스워드는 my.cnf에 설정한
# /opt/mysql/3316/log/mysql_3316.log 로그에 나와있음
# 예) ... [Server] A temporary password is generated for root@localhost: 패스워드
mysql -S /tmp/mysql_3316.sock -p

alter user 'root'@'localhost' identified with mysql_native_password by '변경할 패스워드';

flush privileges;

# [MySQL 종료]
# 아래 명령어를 실행하고 좀 전에 변경한 패스워드 입력
/usr/local/mysql/bin/mysqladmin -h 127.0.0.1 -u root -p -P 3316 shutdown

 

4. 기타

계정 및 디비 생성

create database 디비;

create user '계정'@'%' identified by '비밀번호';

grant all privileges on 디비.* to '계정'@'%';

flush privileges;

 

끝.

댓글