본문 바로가기
MySQL/MySQL Installation

MySQL 5.7.27 Source Installation (MySQL 5.7.27 소스설치)

by 의미와의미 2022. 1. 18.
반응형
#구성환경

 

VMWARE VIRTUALBOX 6.1
OS CENTOS 7.9
MYSQL 5.7.27

#다운로드 파일

설치 파일명 비고
mysql-boost-5.7.27.tar.gz mysql(boost포함) 설치파일  압축해제
boost_1_59_0.tar.gz  

 

RPM 패키지
boost_1_59_0
cmake-2.8.12
automake-1.13.4-3.el7.noarch
cmake-2.8.12.2-2.el7.x86_64
make-3.82-24.el7.x86_64
openssl-libs-1.0.2k-19.el7.x86_64
openssl-1.0.2k-19.el7.x86_64
openssl-devel-1.0.2k-19.el7.x86_64
pcre-devel-8.32-17.el7.x86_64.rpm
openssl-devel-1.0.2k-19.el7.x86_64.rpm
openssl098e-0.9.8e-29.el7.centos.3.x86_64
ncurses-libs-5.9-14.20130511.el7_4.x86_64
ncurses-base-5.9-14.20130511.el7_4.noarch
ncurses-devel-5.9-14.20130511.el7_4.x86_64
ncurses-5.9-14.20130511.el7_4.x86_64
autoconf-2.69-11.el7.noarch
automake-1.13.4-3.el7.noarch
binutils-2.27-44.base.el7.x86_64
bison-3.0.4-2.el7.x86_64
flex-2.5.37-6.el7.x86_64
gcc-gfortran-4.8.5-44.el7.x86_64
gcc-c++-4.8.5-44.el7.x86_64
libgcc-4.8.5-44.el7.x86_64
gcc-4.8.5-44.el7.x86_64
gettext-libs-0.19.8.1-3.el7.x86_64
gettext-0.19.8.1-3.el7.x86_64
gettext-common-devel-0.19.8.1-3.el7.noarch
gettext-devel-0.19.8.1-3.el7.x86_64
libtool-2.4.2-22.el7_3.x86_64
libtool-ltdl-2.4.2-22.el7_3.x86_64
patch-2.7.1-12.el7_7.x86_64
speech-dispatcher-python-0.7.1-15.el7.x86_64
speech-dispatcher-0.7.1-15.el7.x86_64
patchutils-0.3.3-4.el7.x86_64
kpatch-0.6.1-6.el7.noarch
pkgconfig-0.27.1-4.el7.x86_64
redhat-rpm-config-9.1.0-88.el7.centos.noarch
rpm-build-4.11.3-45.el7.x86_64
rpm-build-libs-4.11.3-45.el7.x86_64
rpm-sign-4.11.3-45.el7.x86_64
perl-parent-0.225-244.el7.noarch
perl-Pod-Escapes-1.04-294.el7_6.noarch
perl-libs-5.16.3-294.el7_6.x86_64
perl-threads-1.87-4.el7.x86_64
perl-constant-1.27-2.el7.noarch
perl-File-Temp-0.23.01-3.el7.noarch
perl-Pod-Simple-3.28-4.el7.noarch

 

 

*MySQL DB 사용 OS 유저는 mysql 

유저 및 디렉토리 설정
# groupadd mysql
# useradd -g mysql mysql
# passwd mysql
# mkdir -p /usr/local/mysql
# mkdir -p /usr/local/mysql_data
다운로드 경로 이동 압축해제
# cd /files
# ls -alrt
# tar xvzf mysql-boost-5.7.27.tar.gz
# tar xvzf boost_1_59_0.tar.gz
# cd mysql-boost-5.7.27
# pwd
   /media/mysql-5.7.27

 

#CMAKE 수행

CMAKE 실행
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql_data \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DWITH_EXTRA_CHARSETS=all \
-DENABLED_LOCAL_INFILE=1 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/media/boost_1_59_0 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DSYSCONFDIR=/etc \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DMYSQL_TCP_PORT=3306
참고 :
수행로그
[root@mysqlnode1 mysql-5.7.27]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql_data -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DWITH_EXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/media/boost_1_59_0 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DMYSQL_TCP_PORT=3306
-- Running cmake version 2.8.12.2
-- Found Git: /usr/bin/git (found version "1.8.3.1")
-- Configuring with MAX_INDEXES = 64U
-- CMAKE_GENERATOR: Unix Makefiles
-- SIZEOF_VOIDP 8
-- MySQL 5.7.27
-- Packaging as: mysql-5.7.27-Linux-x86_64
-- Local boost dir /media/boost_1_59_0
-- Found /media/boost_1_59_0/boost/version.hpp
-- BOOST_VERSION_NUMBER is #define BOOST_VERSION 105900
-- BOOST_INCLUDE_DIR /media/boost_1_59_0
-- NUMA library missing or required version not available
-- Found Git: /usr/bin/git
-- LIBEVENT_INCLUDE_DIRS /media/mysql-5.7.27/extra/libevent/include;/media/mysql-5.7.27/extra/libevent/include
-- LIBEVENT_LIBRARIES event
-- Cannot find system sasl libraries.
-- WITH_PROTOBUF=bundled
-- protobuf version is 2.6
-- You need to set WITH_CURL. This variable needs to point to curl library.
-- Creating LDAP authentication SASL client library.
-- Currently LDAP SASL client authentication plug-in is build with only system installed cyrus SASL library.
-- Required SASL library is missing. Skipping the LDAP SASL client authentication plugin.
-- Library mysqlclient depends on OSLIBS -lpthread;m;rt;dl
-- MERGE_CONVENIENCE_LIBRARIES TARGET mysqlclient
-- MERGE_CONVENIENCE_LIBRARIES LIBS clientlib;dbug;strings;vio;mysys;mysys_ssl;zlib;yassl;taocrypt;dl
-- MERGE_CONVENIENCE_LIBRARIES MYLIBS clientlib;dbug;strings;vio;mysys;mysys_ssl;zlib;yassl;taocrypt
-- checking for module 'libtirpc'
--   package 'libtirpc' not found
-- checking for module 'libtirpc'
--   package 'libtirpc' not found
-- RPC_INCLUDE_DIRS /usr/include
-- Using Boost headers from /media/boost_1_59_0
-- MYSQLX - Text log of protobuf messages enabled
-- Googletest was not found. gtest-based unit tests will be disabled. You can run cmake . -DENABLE_DOWNLOADS=1 to automatically download and build required components from source.
-- If you are inside a firewall, you may need to use an https proxy: export https_proxy=http://example.com:80
-- executable target mysqld debug_target /media/debug/sql/mysqld
-- Library mysqlserver depends on OSLIBS -lpthread;m;rt;crypt;dl
-- MERGE_CONVENIENCE_LIBRARIES TARGET mysqlserver
-- MERGE_CONVENIENCE_LIBRARIES LIBS dbug;strings;regex;mysys;mysys_ssl;vio;zlib;yassl;taocrypt;crypt;dl;archive_embedded;blackhole_embedded;csv_embedded;federated_embedded;heap_embedded;innobase_embedded;lz4_lib;myisam_embedded;myisammrg_embedded;partition_embedded;ngram_parser_embedded;sql_embedded
-- MERGE_CONVENIENCE_LIBRARIES MYLIBS dbug;strings;regex;mysys;mysys_ssl;vio;zlib;yassl;taocrypt;archive_embedded;blackhole_embedded;csv_embedded;federated_embedded;heap_embedded;innobase_embedded;lz4_lib;myisam_embedded;myisammrg_embedded;partition_embedded;ngram_parser_embedded;sql_embedded
-- library target mysqlserver debug_target /media/debug/archive_output_directory/libmysqld.a
-- INSTALL mysqlclient.pc lib/pkgconfig
-- Skipping deb packaging on unsupported platform .
-- CMAKE_BUILD_TYPE: RelWithDebInfo
-- COMPILE_DEFINITIONS: _GNU_SOURCE;_FILE_OFFSET_BITS=64;HAVE_CONFIG_H;HAVE_LIBEVENT2
-- CMAKE_C_FLAGS:  -Wall -Wextra -Wformat-security -Wvla -Wwrite-strings -Wdeclaration-after-statement
-- CMAKE_CXX_FLAGS:  -Wall -Wextra -Wformat-security -Wvla -Woverloaded-virtual -Wno-unused-parameter
-- CMAKE_C_LINK_FLAGS:
-- CMAKE_CXX_LINK_FLAGS:
-- CMAKE_C_FLAGS_RELWITHDEBINFO: -O3 -g -fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing -DDBUG_OFF
-- CMAKE_CXX_FLAGS_RELWITHDEBINFO: -O3 -g -fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing -DDBUG_OFF
-- Configuring done
-- Generating done
-- Build files have been written to: /media/mysql-5.7.27
# make
# make test
# make install

 

#디렉토리 권한 수정

디렉토리 권한 수정
# chmod -R 755  /usr/local/mysql
# chown -R mysql:mysql /usr/local/mysql
# chmod -R 755  /usr/local/mysql_data
# chown -R mysql:mysql /usr/local/mysql_data

 

#초기 MySQL 환경설정

# vi /etc/my.cnf
#기본 파라미터 설정

[mysqld]

datadir=/usr/local/mysql_data

socket=/usr/local/mysql/mysql.sock

 

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

symbolic-links=0


[mysqld_safe]

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

pid-file=/usr/local/mysql_data/mysqld.pid
# cd /usr/local/mysql/bin
./mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql
[root@mysqlnode1 bin]# ./mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql
mysqld: [ERROR] Found option without preceding group in config file /etc/my.cnf at line 1!
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
[root@mysqlnode1 bin]# ./mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql
2022-01-18T04:17:51.316333Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2022-01-18T04:17:51.951932Z 0 [Warning] InnoDB: New log files created, LSN=45790
2022-01-18T04:17:52.088338Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2022-01-18T04:17:52.173717Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 9a671942-7815-11ec-a6c2-08002789c151.
2022-01-18T04:17:52.182335Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2022-01-18T04:17:52.184692Z 1 [Note] A temporary password is generated for root@localhost: ypqeR,wev6k>
# MySQL 데이터파일 확인
[root@mysql bin]# cd /usr/local/mysql_data/
[root@mysql mysql_data]# ls
auto.cnf  ib_buffer_pool  ibdata1  ib_logfile0  ib_logfile1  mysql  performance_schema  sys
# SSL 환경구성
[root@mysqlnode1 bin]# ./mysql_ssl_rsa_setup
Generating a 2048 bit RSA private key
............+++
...................................................+++
writing new private key to 'ca-key.pem'
-----
Generating a 2048 bit RSA private key
............................................................................+++
.........+++
writing new private key to 'server-key.pem'
-----
Generating a 2048 bit RSA private key
....................+++
.....................+++
# MySQL 백그라운드 실행
[root@mysqlnode1 bin]# ./mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &
[1] 17881
[root@mysqlnode1 bin]# 2022-01-18T04:21:14.200945Z mysqld_safe Logging to '/var/log/mysqld.err'.
2022-01-18T04:21:14.264918Z mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql_data
#프로세스 확인
[root@mysqlnode1 mysql]# ps -ef | grep mysqld
root     17881  2704  0 13:21 pts/0    00:00:00 /bin/sh ./mysqld_safe --defaults-file=/etc/my.cnf --user=mysql
mysql    18018 17881  1 13:21 pts/0    00:00:00 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql_data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/var/log/mysqld.err --pid-file=/usr/local/mysql_data/mysqld.pid --socket=/usr/local/mysql/mysql.sock
root     18058  3482  0 13:21 pts/1    00:00:00 grep --color=auto mysqld
# MySQL 접속 
[root@mysql bin]# ./mysql -u root -p mysql -S /usr/local/mysql/mysql.sock
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.27

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
# 패스워드 설정
ALTER USER 'root'@'localhost' IDENTIFIED BY 'oracle!';
flush privileges;
mysql> show databases
    -> ;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
# MySQL 종료
[root@mysqlnode1 bin]# ./mysqladmin -u root -p shutdown
Enter password:
2022-01-18T04:51:27.751021Z mysqld_safe mysqld from pid file /usr/local/mysql_data/mysqld.pid ended
[1]+  Done                    ./mysqld_safe --defaults-file=/etc/my.cnf --user=mysql

 

# MySQL 유저 등록
# cd  /usr/local/mysql/support-files
# ls -alert
magic  mysqld_multi.server  mysql-log-rotate  mysql.server
# cp mysql.server /etc/init.d/mysqld
# chmod 775 /etc/init.d/mysqld
$ su - mysql
$ vi /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/usr/local/mysql_data
심볼릭 생성
$ ln -s /usr/local/mysql/mysql.sock /usr/local/mysql_data/mysql.sock
# 환경변수 셋팅
$ vi . bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin:

$ . .bash_profile
# MySQL 실행
$ service mysqld start
Starting MySQL.. SUCCESS!
[mysql@mysqlnode1 ~]$ ps -ef | grep mysqld
mysql    18578     1  0 13:55 pts/1    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql_data --pid-file=/usr/local/mysql_data/mysqlnode1.pid
mysql    18733 18578 61 13:55 pts/1    00:00:10 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql_data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/var/log/mysqld.err --pid-file=/usr/local/mysql_data/mysqlnode1.pid --socket=/usr/local/mysql/mysql.sock
mysql    18764 18402  0 13:55 pts/1    00:00:00 grep --color=auto mysqld
# MySQL DB 구성 확인

[mysql@mysqlnode1 ~]$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.27 Source distribution

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql> status
--------------
mysql  Ver 14.14 Distrib 5.7.27, for Linux (x86_64) using  EditLine wrapper

Connection id:          2
Current database:
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.7.27 Source distribution
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /usr/local/mysql/mysql.sock
Uptime:                 5 min 6 sec

Threads: 1  Questions: 6  Slow queries: 0  Opens: 107  Flush tables: 1  Open tables: 26  Queries per second avg: 0.019


mysql> show variables like 'c%';
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | utf8                             |
| character_set_connection | utf8                             |
| character_set_database   | utf8                             |
| character_set_filesystem | binary                           |
| character_set_results    | utf8                             |
| character_set_server     | utf8                             |
| character_set_system     | utf8                             |
| character_sets_dir       | /usr/local/mysql/share/charsets/ |
| check_proxy_users        | OFF                              |
| collation_connection     | utf8_general_ci                  |
| collation_database       | utf8_general_ci                  |
| collation_server         | utf8_general_ci                  |
| completion_type          | NO_CHAIN                         |
| concurrent_insert        | AUTO                             |
| connect_timeout          | 10                               |
| core_file                | OFF                              |
+--------------------------+----------------------------------+
# 패스워드 변경
mysql> mysqladmin -u root password 'password 설정'
# DB 생성
[mysql@mysqlnode1 ~]$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.27 Source distribution

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> create database test1;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test1              |
+--------------------+
5 rows in set (0.00 sec)

mysql> show processlist
    -> ;
+----+------+-----------+-------+---------+------+----------+------------------+
| Id | User | Host      | db    | Command | Time | State    | Info             |
+----+------+-----------+-------+---------+------+----------+------------------+
|  2 | root | localhost | NULL  | Query   |    0 | starting | show processlist |
|  3 | root | localhost | test1 | Sleep   |  202 |          | NULL             |
+----+------+-----------+-------+---------+------+----------+------------------+
2 rows in set (0.00 sec)
#패스워드 변경
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'oracle!';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

로그인 후 반드시 root 암호를 변경해 줍니다. 처음에 제공된 암호는 만료가 되는 암호이므로 반드시 변경하셔야 합니다.

#접속 정책 생성

# 방화벽 해제
firewall-cmd --permanent --zone=dmz --add-service=mysql
firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --reload
firewall-cmd --list-ports
mysql> grant all privileges on test1.* to 'USERNAME'@'%' identified by 'PASSWORD';
mysql> flush privileges;
root 권한에 대해 외부에서 접속하게 하고자 할 때
mysql> grant all privileges on *.* to 'root'@'%' identified by 'oracle!';

 

반응형

'MySQL > MySQL Installation' 카테고리의 다른 글

Docker MySQL Replication 구성(이중화)  (1) 2024.12.09
Docker MySQL8.0 설치  (0) 2024.07.04

댓글