end0tknr's kipple - 新web写経開発

http://d.hatena.ne.jp/end0tknr/ から移転しました

CentOS 7.4 へ mysql 5.6.40 を src から install

以前も mysql 5.7 に関して同様のentryを記載していますが、 virtual boxで動作させている centos を ver.7.4 にした為、改めてinstall

先程のentryにも記載していますが、mysql 5.7.18 より、

my.cnf が提供されない為、mysql 5.6.40をinstallしています

mysql5.7 をsrcからinstall - end0tknr's kipple - 新web写経開発

MySQL :: MySQL 5.6 リファレンスマニュアル :: 2.9 ソースから MySQL をインストールする

$ cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core)

前準備 - readline と ncurses の intall

以前は、とっくにreadlineやncurses (≒ curses) がinstall された centos7 環境に mysql をinstallしていたらしい。

そこで今回は、readline と ncurses を install

readline

$ ftp://ftp.cwru.edu/pub/bash/readline-6.3.tar.gz
$ tar -xvf readline-6.3.tar.gz
$ cd readline-6.3
$ configure
$ make
$ sudo make install

ncurses ≒ curses

https://www.gnu.org/software/ncurses/

https://invisible-island.net/ncurses/ncurses.html

$ sudo yum install ncurses-devel

mysql の build や install

$ tar -xvf mysql-5.6.40.tar.gz
$ cd mysql-5.6.40
$ cmake . \
   -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
   -DDEFAULT_CHARSET=utf8 \
   -DDEFAULT_COLLATION=utf8_general_ci \
   -DENABLED_LOCAL_INFILE=true \
   -DWITH_INNOBASE_STORAGE_ENGINE=1 \
   -DWITH_EXTRA_CHARSETS=all \
   -DWITH_READLINE=ON \
$ make
$ make test
$ sudo make install

設定

ユーザやグループ追加

$ sudo groupadd mysql
$ sudo useradd -r -g mysql mysql

mysql_install_db 実行による data dirや my.cnfの作成

MySQL :: MySQL 5.6 リファレンスマニュアル :: 2.9.2 標準ソース配布を使用して MySQL をインストールする

dev.mysql.comのdocument のように単純?に scripts/mysql_install_db を実行すると data dir が /usr/local/mysql 以下に作成されます。

/usr/local/mysql 以下にデータがある構成は、好みではありませんので、「 --datadir=/var/mysql_data/ 」を追加しています。

( dev.mysql.comのdocument では、/usr/local/mysql 以下に data dir を作成する為、 余計な chown や chgrp の実行が必要です )

$ cd /usr/local/mysql
$ sudo /usr/local/bin/perl \
       scripts/mysql_install_db \
         --user=mysql  --datadir=/var/mysql_data/

edit /etc/my.cnf

先程の scripts/mysql_install_db により /usr/local/mysql/my.cnf が作成されますので、 /etc/my.cnf へ移動し、編集します。

$ sudo su -
# cd /etc
# mv /usr/local/mysql/my.cnf ./my.cnf
# vi ./my.cnf

以下、編集内容

old) # basedir = .....
new) basedir = /usr/local/mysql
old) # datadir = .....
new) datadir = /var/mysql_data

mysql 5.1頃から使用していたmy.cnfでは、 他にも様々、設定していましたが、上記だけの編集でも動作はするようです。

一旦、接続test

$ cd /usr/local/mysql
$ sudo bin/mysqld_safe --user=mysql

上のようにmysqldaemonを起動し、 下のようにmysqlのclientで接続できれば、OKです。

$ /usr/local/mysql/bin/mysql -u root
 :
Server version: 5.6.40 Source distribution
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
 :
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

接続test完了後は、mysqldaemonを停止してOKです。

ただし、停止方法が分からなかった為、kill しています。

自動起動

自動起動の設定自体は、mysql.server を /etc/init.d 以下にcopyするだけです。 設定後、centosを再起動して、mysqldaemonが動作していることを確認しましょう。

$ sudo su -
# cd /etc/init.d
# cp /usr/local/mysql/support-files/mysql.server ./mysql.server
# systemctl enable mysql.server

# reboot