웹이야기

5. MySQL 설치(리눅스) - 소스 컴파일 본문

D/MySQL

5. MySQL 설치(리눅스) - 소스 컴파일

yeon.Biju 2020. 1. 8. 10:39

MySQL 8.0.18 설치

MySQL 5.7.28 도 동일하게 설치를 진행해도 잘 되었다. 

 

 

요약본

#yum -y install cmake

#yum -y install git

#yum -y install openssl

#yum -y install openssl-devel

#yum -y install libtirpc

#yum -y install libtirpc-devel

#yum -y --enablerepo=PowerTools install rpcgen

#yum -y install ncurses-devel

 

#groupadd mysql

#useradd -M -g mysql -s /bin/false mysql

#cat /etc/group

#cat /etc/passwd

 

#cd /usr/local/src

#wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.18.tar.gz

#tar xvzf mysql-8.0.18.tar.gz

#cd mysql-8.0.18/

#mkdir build_20200108

#cd build_20200108

 

#cmake ../ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DMYSQL_DATADIR=/usr/local/mysql_data -DENABLED_LOCAL_INFILE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DMYSQL_TCP_PORT=3306 -DENABLE_DOWNLOADS=1cmake ../ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DMYSQL_DATADIR=/usr/local/mysql_data -DENABLED_LOCAL_INFILE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_DEBUG=0 -DMYSQL_MAINTAINER_MODE=0 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DMYSQL_TCP_PORT=3306 -DENABLE_DOWNLOADS=1

 

#make

#make install

 

#cd /usr/local/

#mkdir mysql_data

#chown -R mysql.mysql mysql_data/

#chmod 750 mysql_data/

 

#mkdir /var/lib/mysql

#chown -R mysql.mysql /var/lib/mysql

#chmod 750 /var/lib/mysql

#/usr/local/mysql/bin/mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/usr/local/mysql_data --user=mysql

#/usr/local/mysql/bin/mysql_ssl_rsa_setup

 

#cd /usr/local/mysql/bin

#./mysqld_safe --user=mysql &

 

 

 

 

상세

 

1. 이미 설치된 것이 있는지 없는지 확인

 

#ps -ef | grep mysql

#rpm -qa | grep mysql

 

 

2.

다운로드(소스 버전을 다운로드 받는다)

 

https://webobj.tistory.com/3

 

3. MySQL 다운로드

MySQL 다운로드 https://dev.mysql.com/downloads/mysql/ MySQL :: Download MySQL Community Server Select Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Debian Linux SU..

webobj.tistory.com

*  또는

# wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.18.tar.gz

을 통해 받을 수도 있다.

 

3.

다운로드 받은 것을 적당한 위치로 옮겨 놓는다.

ex) /usr/local/src

 

4.

사용자 생성

- 보안상의 이유로 root 계정이 아닌 mysql 계정을 생성

 

#groupadd mysql 
#useradd -M -g mysql -s /bin/false mysql

 

#cat /etc/group

#cat /etc/passwd

로 잘 추가되었는지 확인.

 

사용자 추가에 대한 자세한 내용은 아래 URL 참조

https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EA%B3%84%EC%A0%95_%EC%83%9D%EC%84%B1_useradd

 

리눅스 계정 생성 useradd - 제타위키

 

zetawiki.com

 

5. MySQL 설치

#tar xvzf mysql-8.0.18.tar.gz 

#cd mysql-8.0.18/

 

#cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql

라고 했더니 아래와 같은 에러도 나온다. (cmake 최종옵션은 아래에 있다.)

(*cmake 는 "\"를 사용하지 않는 것이 좋은 것 같다. )

 

* cmake 하는 도중 아래와 같은 에러가 나온다.

 

-- Source directory /usr/local/src/mysql-8.0.18 
-- Binary directory /usr/local/src/mysql-8.0.18 
CMake Error at CMakeLists.txt:341 (MESSAGE): 
  Please do not build in-source.  Out-of source builds are highly 
  recommended: you can have multiple builds for the same source, and there is 
  an easy way to do cleanup, simply remove the build directory (note that 
  'make clean' or 'make distclean' does *not* work)

 

mysql-5.7.28 에서는 나오지 않으나 mysql-8.0.18 에서는 나온다.

 

소스 디렉토리에서 build 하지 말라는 내용으로 보인다.

따라서 

#mkdir build_20200108

#cd build_20200108

#cmake ../ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql

(cmake 최종옵션은 아래에 있다.)

와 같이 build 를 진행하니 잘 된다.

 

 

다시 본론으로 돌아가서 cmake 를 해보니

bash: cmake: command not found... 라고 나온다.

 

   1) cmake 패키지 설치

      #yum -y install cmake

 

Running cmake version 3.11.4
-- Could NOT find Git (missing: GIT_EXECUTABLE) 

라고 나와서

   2) git 패키지 설치

      #yum -y install git

 

CMake Error at cmake/boost.cmake:104 (MESSAGE):
  You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=

라고 나와서

   3) build 옵션에 추가

      -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost

 

Cannot find appropriate system libraries for WITH_SSL=system.
Make sure you have specified a supported SSL version. 
Valid options are : 
system (use the OS openssl library), 
yes (synonym for system), 
</path/to/custom/openssl/installation>

CMake Error at cmake/ssl.cmake:66 (MESSAGE):
  Please install the appropriate openssl developer package.

Call Stack (most recent call first):
  cmake/ssl.cmake:260 (FATAL_SSL_NOT_FOUND_ERROR)
  CMakeLists.txt:573 (MYSQL_CHECK_SSL)

라고 나온다.

 

   4) open ssl 설치

   #yum -y install openssl

이미 설치되어 있다.

   #yum -y install openssl-devel

 

다시 실행

 

-- Found PkgConfig: /usr/bin/pkg-config (found version "1.4.2") 
-- Checking for module 'libtirpc'
--   Package 'libtirpc', required by 'virtual:world', not found
CMake Error at cmake/rpc.cmake:65 (MESSAGE):
  Could not find rpc/rpc.h in /usr/include or /usr/include/tirpc
Call Stack (most recent call first):
  plugin/group_replication/libmysqlgcs/configure.cmake:57 (MYSQL_CHECK_RPC)
  plugin/group_replication/libmysqlgcs/CMakeLists.txt:28 (INCLUDE)

 

라고 나온다. 

 

   5) libtirpc 패키지 설치

#yum -y install libtirpc

이미 있다고 나온다.

#yum -y install libtirpc-devel

 

다시 실행

-- Performing Test X_PUTLONG_NOT_USE_CONST - Failed
CMake Error at plugin/group_replication/libmysqlgcs/rpcgen.cmake:100 (MESSAGE):
  Could not find rpcgen
Call Stack (most recent call first):
  plugin/group_replication/libmysqlgcs/CMakeLists.txt:38 (INCLUDE)

 

라고 나온다.

 

   6)rpcgen 패키지 설치

   #yum -y --enablerepo=PowerTools install rpcgen

 

   7) ncurses-devel 패키지 설치

아래와 같은 오류가 발생하는 경우에 설치한다.

 

-- Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH) CMake Error at cmake/readline.cmake:71 (MESSAGE): Curses library not found. Please install appropriate package, remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel. Call Stack (most recent call first): cmake/readline.cmake:100 (FIND_CURSES) cmake/readline.cmake:194 (MYSQL_USE_BUNDLED_EDITLINE) CMakeLists.txt:1185 (MYSQL_CHECK_EDITLINE)

 

#yum -y install ncurses-devel

 

 

 

최종 빌드한 옵션은 아래와 같다.

#cmake ../ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DMYSQL_DATADIR=/usr/local/mysql_data -DENABLED_LOCAL_INFILE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DMYSQL_TCP_PORT=3306 -DENABLE_DOWNLOADS=1cmake ../ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DMYSQL_DATADIR=/usr/local/mysql_data -DENABLED_LOCAL_INFILE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_DEBUG=0 -DMYSQL_MAINTAINER_MODE=0 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DMYSQL_TCP_PORT=3306 -DENABLE_DOWNLOADS=1

 

* DMYSQL_DATADIR의 위치가 DCMAKE_INSTALL_PREFIX   의 하위로 들어가니 나중에 에러가 발생한다.

([ERROR] --initialize specified but the data directory exists. Aborting.)

 

#make

 

#make install

 

#cd /usr/local/
#mkdir mysql_data
#chown -R mysql.mysql mysql_data/
#chmod 750 mysql_data/
#cd /usr/local/mysql/bin

 


#./mysqld --initialize --user=mysql
#./mysql_ssl_rsa_setup 

#./mysqld_safe --user=mysql &

 

오류 발생
Logging to '/usr/local/mysql_data/localhost.localdomain.err'.
2020-01-10T04:45:45.276806Z mysqld_safe Directory '/var/lib/mysql' for UNIX socket file don't exists.

 

다시.


#mkdir /var/lib/mysql
#chown -R mysql.mysql /var/lib/mysql
#chmod 750 /var/lib/mysql
#./mysqld_safe --user=mysql &

 

 

오류 발생

2020-01-10T04:46:21.114451Z 1 [ERROR] [MY-011011] [Server] Failed to find valid data directory. 
2020-01-10T04:46:21.114719Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed. 

 

다시.

#/usr/local/mysql/bin/mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/usr/local/mysql_data --user=mysql

 

2020-01-10T04:47:55.825335Z 0 [ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting. 
2020-01-10T04:47:55.825340Z 0 [ERROR] [MY-013236] [Server] The designated data directory /usr/local/mysql_data/ is unusable. You can remove all files that the server added to it. 


#./mysqld_safe --user=mysql & 

 

#mysql -uroot -p

비밀번호 입력시 그냥 Enter

(초기화 할 때 --initialize-insecure 라고 했기 때문에 비밀번호가 없다. )

 

MySQL root 비밀번호를 변경하는 방법은 아래 URL을 참조한다.

https://webobj.tistory.com/8

 

7. MySQL root 패스워드 변경

mysql을 설치하고 나면 root 패스워드를 변경해줘야 한다. 1) --initialize-insecure 를 이용해서 데이타 디렉토리를 초기화 했다면 root 패스워드는 설정되어 있지 않다. [Warning] [MY-010453] [Server] root..

webobj.tistory.com

 

설치 완료!!

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

7. MySQL root 패스워드 변경  (0) 2020.01.11
6. MySQL 설치(소스 컴파일, 5.7, 8.x 버전)  (0) 2020.01.09
4. MySQL 설치(리눅스) - yum 으로 설치  (0) 2020.01.08
3. MySQL 다운로드  (0) 2020.01.07
2. MySQL 접속 확인/연결 확인  (0) 2020.01.07
Comments