centOS7 mysql 설치


root 로 명령어 실행


yum으로 설치하기 전에 아래 명령어를 설치 환경에 맞게 선택해서 실행해줘야 한다.



############ RHEL / centOS7 ###############

mysql 5.7

# rpm -ivh https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm


mysql 5.6

# rpm -ivh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm



############ RHEL6 / centOS6 / Amazon Linux ###############


mysql 5.7

# rpm -ivh https://dev.mysql.com/get/mysql57-community-release-el6-11.noarch.rpm


mysql 5.6

# rpm -ivh http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm







yum 으로 설치

# yum -y install mysql-community-server



설치 완료 후 MySQL을 구동한다.

# systemctl start mysqld.service


재시작 시 mysql 이 실행 되도록 설정

# systemctl enable mysqld.service


MySQL 서버의 상태를 확인

# systemctl status mysqld.service



######################################################################################


MySQL 서버 초기화 (MySQL 5.7 전용) : 서버의 초기 시작시, 서버의 데이터 디렉토리가 비어 있다면 다음과 같은 일이 발생합니다 :


+ 서버가 초기화됩니다.


+ SSL 인증서 및 키 파일은 데이터 디렉토리에 생성됩니다.


+ validate_password 플러그인을 설치하고 사용할 수 있습니다.


+ 수퍼 유저 계정 'root'@'localhost' 이 생성됩니다. 수퍼 유저의 암호가 설정되어 오류 로그 파일에 저장됩니다. 이를 표시하려면 다음 명령을 사용하십시오.


shell> sudo grep 'temporary password' /var/log/mysqld.log


생성 된 임시 암호로 로그인하여 가능한 한 빨리 루트 암호를 변경하고 수퍼 유저 계정의 사용자 정의 암호를 설정하십시오.


shell> mysql -uroot -p


mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';


*** 노트 ***

MySQL의 validate_password 플러그인은 기본적으로 설치됩니다. 이렇게하려면 암호에 적어도 하나의 대문자, 소문자 한 자, 한 자릿수 및 한 개의 특수 문자가 포함되어 있어야하며 총 암호 길이는 8 자 이상이어야합니다.


mysql root password : 6y5t4r#E@W!Q


#######################################################################################






mysql까지 들어가면 프롬프트가 mysql>로 바뀌면 설치가 완료

# mysql


quit 명령으로 mysql에서 빠져 나옵니다.

mysql>quit


reboot 명령으로 재시작합니다.

# reboot



재시작 후 mysql 이 정상 실행 되면 정상적으로 설치가 완료된것입니다.

# mysql -uroot -p


설정한 패스워드 입력하여 로그인


mysql에서 명령을 입력합니다.

mysql> status


설정값에서 Server characterset, Db characterset 값이 utf8 이 아닐 경우


mysql의 charaterset 을 utf8로 통일 시키도록 합니다.


my.cnf 파일을 편집

# vi /etc/my.cnf


############ 기존에 있는것은 놔두고 없는것은 추가 ###############

[client] 

default-character-set = utf8

 

[mysql]

default-character-set=utf8

 

[mysqld]

 

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

 

character-set-server=utf8

collation-server=utf8_general_ci

init_connect=SET collation_connection = utf8_general_ci

init_connect=SET NAMES utf8

 

character-set-client-handshake = FALSE

skip-character-set-client-handshake

 

[mysqldump]

default-character-set=utf8


========================================= /etc/my.cnf =======================================================


# For advice on how to change settings please see

# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html


[mysqld]

#

# Remove leading # and set to the amount of RAM for the most important data

# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.

# innodb_buffer_pool_size = 128M

#

# Remove leading # to turn on a very important data integrity option: logging

# changes to the binary log between backups.

# log_bin

#

# Remove leading # to set options mainly useful for reporting servers.

# The server defaults are faster for transactions and fast SELECTs.

# Adjust sizes as needed, experiment to find the optimal values.

# join_buffer_size = 128M

# sort_buffer_size = 2M

# read_rnd_buffer_size = 2M

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock


# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0


log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid


character-set-server=utf8

collation-server=utf8_general_ci

init_connect=SET collation_connection = utf8_general_ci

init_connect=SET NAMES utf8

character-set-client-handshake = FALSE

skip-character-set-client-handshake



[client]

default-character-set = utf8


[mysql]

default-character-set=utf8


[mysqldump]

default-character-set=utf8


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


저장 후 mysql을 재시작

# systemctl restart mysqld

 

# mysql -uroot -p


mysql을 실행하고  status 명령으로 charcterset이 utf8 로 변경되었는지 확인

mysql> status



기본적으로 MySQL은 내부(Local)에서만 접속할 수 있다.

때문에 외부 접속은 개별적으로 등록해주어야하는데

mysql> SELECT HOST, USER FROM MYSQL.USER;

​우선 위와같이 쿼리를 날려보면

접근이 허가된 사용자와 호스트 내역을 보여준다.


​Localhost에서 접속할 수 있는 root계정은 기본적으로 등록되어 있을거고

자신이 접근하고자 하는 계정과 호스트를 다음과 같이 등록해준다.

​1. 특정 IP에서만 접속 할 경우 (ex. 111.222.33.44 IP에서만 접근)


mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'111.222.333.44' identified by '비밀번호';

mysql> FLUSH PRIVILEGES;



​2. 특정 IP 대역에서 접속 할 경우 (ex. 111.222.로 시작하는 IP대역)


mysql> GRANT ALL PRIVILEGES ON *.* TO '계정'@'111.222.%' identified by '비밀번호';

mysql> FLUSH PRIVILEGES;


3. 모든 IP를 허용 할 경우


mysql> GRANT ALL PRIVILEGES ON *.* TO '계정'@'%' identified by '비밀번호';

mysql> FLUSH PRIVILEGES;


​%는 '모든 것'이라는 의미를 가지며

만약 root 계정을 어디서나 접속할 수 있도록하고 계정 비밀번호가 1234라면

다음과 같이 쿼리를 날리면 된다.


mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' identified by '1234';

mysql> FLUSH PRIVILEGES;

완료하였다면 아래 select문을 실행하여 접근 허용 내역에 잘 등록되었는지 꼭 확인한다.


mysql> SELECT HOST, USER FROM MYSQL.USER;




방화벽에서 3306포트 접속 허용

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


방화벽 변경사항적용

# firewall-cmd --reload 


방화벽 목록

# firewall-cmd --list-all 


포트 변경되었을 경우 방화벽 재실행

# systemctl restart firewalld



참고 URL

https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/#repo-qg-yum-installing

https://opentutorials.org/module/1701/10229

http://blog.naver.com/writer0713/221061669555

http://blog.naver.com/dongju1325/220964320999

+ Recent posts