[CentOS] CentOS7.6にMySQL5.6をインストールする

※当サイトでは広告を掲載しています

CentOS7.6でデフォルトでインストールできるMySQLは、MariaDBというMySQL派生のDBです。

MySQLとほぼ同じなので、そのまま使っても特に問題はないのですが、本番環境でMySQL5.6を使うにあたり、同じバージョンに揃えたいので、入れ替えることにしました。

入れ替え自体はそんなに大変ではありませんが、手順が多いので、備忘録としてメモメモ。

MariaDBのアンインストール

デフォルトで入るのはMariaDBの5.5。これはMySQL5.5に相当するため、もしMySQL5.5で環境構築をしたいのであれば、入れ替える必要はないかもしれません。

ではまず、インストールされているパッケージの確認。

# rpm -qa | grep maria
mariadb-libs-5.5.60-1.el7_5.x86_64

MariaDBをアンインストールします。

# yum remove mariadb-libs

依存性関連のパッケージがあれば、一緒に削除されます。自分の環境では、3種類くらいのパッケージが一緒に削除されました。

MySQL公式リポジトリの追加と設定

MySQLの5.6以降をインストールするためには、まずMySQL公式サイトからリポジトリをインストールする必要があります。

CentOS7系は、RHEL7系のパッケージを使いますので、RHEL7系用のパッケージをダウンロードします。または、直接インストールしてしまいましょう。

# yum install https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm

このリポジトリを追加することで、MySQL5.5、5.6、5.7、8.0のいずれかを選択して、インストールすることができるようになります。

リポジトリが追加されたかどうかは、以下のコマンドで確認できます。

# yum repolist all | grep mysql
mysql-cluster-7.5-community/x86_64 MySQL Cluster 7.5 Community      無効
mysql-cluster-7.5-community-source MySQL Cluster 7.5 Community - So 無効
mysql-cluster-7.6-community/x86_64 MySQL Cluster 7.6 Community      無効
mysql-cluster-7.6-community-source MySQL Cluster 7.6 Community - So 無効
mysql-connectors-community/x86_64  MySQL Connectors Community       有効
mysql-connectors-community-source  MySQL Connectors Community - Sou 無効
mysql-tools-community/x86_64       MySQL Tools Community            有効
mysql-tools-community-source       MySQL Tools Community - Source   無効
mysql-tools-preview/x86_64         MySQL Tools Preview              無効
mysql-tools-preview-source         MySQL Tools Preview - Source     無効
mysql55-community/x86_64           MySQL 5.5 Community Server       無効
mysql55-community-source           MySQL 5.5 Community Server - Sou 無効
mysql56-community/x86_64           MySQL 5.6 Community Server       無効
mysql56-community-source           MySQL 5.6 Community Server - Sou 無効
mysql57-community/x86_64           MySQL 5.7 Community Server       無効
mysql57-community-source           MySQL 5.7 Community Server - Sou 無効
mysql80-community/x86_64           MySQL 8.0 Community Server       有効
mysql80-community-source           MySQL 8.0 Community Server - Sou 無効
上記リストで「有効」となっている項目が、デフォルトでインストールされるものになります。このままではMySQL8.0がインストールされてしまうので、5.6がインストールされるように設定を変更します。
# yum-config-manager --disable mysql80-community
# yum-config-manager --enable mysql56-community
1行目のコマンドで、MySQL8.0を無効化します。 2行目のコマンドで、MySQL5.6を有効化します。 もう一度、一覧を表示して確認してみましょう。
# yum repolist all | grep mysql
mysql-cluster-7.5-community/x86_64 MySQL Cluster 7.5 Community      無効
mysql-cluster-7.5-community-source MySQL Cluster 7.5 Community - So 無効
mysql-cluster-7.6-community/x86_64 MySQL Cluster 7.6 Community      無効
mysql-cluster-7.6-community-source MySQL Cluster 7.6 Community - So 無効
mysql-connectors-community/x86_64  MySQL Connectors Community       有効
mysql-connectors-community-source  MySQL Connectors Community - Sou 無効
mysql-tools-community/x86_64       MySQL Tools Community            有効
mysql-tools-community-source       MySQL Tools Community - Source   無効
mysql-tools-preview/x86_64         MySQL Tools Preview              無効
mysql-tools-preview-source         MySQL Tools Preview - Source     無効
mysql55-community/x86_64           MySQL 5.5 Community Server       無効
mysql55-community-source           MySQL 5.5 Community Server - Sou 無効
mysql56-community/x86_64           MySQL 5.6 Community Server       有効
mysql56-community-source           MySQL 5.6 Community Server - Sou 無効
mysql57-community/x86_64           MySQL 5.7 Community Server       無効
mysql57-community-source           MySQL 5.7 Community Server - Sou 無効
mysql80-community/x86_64           MySQL 8.0 Community Server       無効
mysql80-community-source           MySQL 8.0 Community Server - Sou 無効
無事にmysql56-communityが有効化されました。 もし、yum-config-managerコマンドが使えなかった場合は、yum-utilsパッケージをインストールすることで使えるようになります。
# yum install yum-utils

MySQLのインストール

インストールを行う前に、念のためパッケージのバージョンを確認します。
# yum info mysql-community-server
パッケージの情報がずらずらっと表示されますが、バージョンが5.6.xxになっていればOK。インストールします。
# yum install mysql-community-server
途中、mysql公開鍵が無いというメッセージが表示されますが、インストール時に鍵も一緒に入るので、気にせずそのまま続けましょう。 インストール後、バージョンを確認します。
# mysqld --version
mysqld Ver 5.6.43 for Linux on x86_64 (MySQL Community Server (GPL))
以上でMySQL5.6のインストールが完了です。ついでに自動起動の設定をして、MySQLを起動させておきましょう。
# systemctl enable mysqld
# systemctl start mysqld

MySQLの初期設定

MySQLの初期設定は、いくつかの質問に答えていくだけで完了します。質問部分だけ抜粋してみました。
# mysql_secure_installation
Enter current password for root (enter for none):(何も入力せずエンター)
Set root password? [Y/n] y(設定しておいた方がいいのでy)
New password:(設定したいパスワードを入力)
Re-enter new password:(設定したいパスワードを再入力)
Remove anonymous users? [Y/n] y(匿名ユーザーは不要なのでy)
Disallow root login remotely? [Y/n] y(rootでリモートログインはNGなのでy)
Remove test database and access to it? [Y/n]y(テスト用のデータベースはいらないのでy)
Reload privilege tables now? [Y/n]y(ここまでの設定を反映させるのでy)
続いて、文字コードの設定を行っておきます。これをやっておかないと、日本語で文字化けが発生することがあります。
# vi /etc/my.cnf
[mysqld_safe]の上あたりに、以下の4行を追加します。
character_set_server=utf8mb4
explicit_defaults_for_timestamp = true
skip-character-set-client-handshake
table_definition_cache = 400
MySQLを再起動します。
# systemctl restart mysqld

MySQLユーザーの作成

いつもrootユーザーでDBを操作するわけにはいかないので、ユーザーを作成します。 まずはMySQLにログインします。
# mysql -p
Enter password:(rootユーザーに設定したパスワード)
今回はローカル環境でしか使用しないサーバなので、全ての権限を持ったユーザーを作成します。通常は、こんなユーザーを作ったらダメですよ!
mysql> GRANT ALL PRIVILEGES ON *.* TO 'ユーザー名'@'localhost' IDENTIFIED BY 'パスワード';
mysql> FLUSH PRIVILEGES;
以降は、このユーザーで操作をするため、ログインしなおします。
mysql> exit;
# mysql -u ユーザー名 -p
Enter password:(作成したユーザーに設定したパスワード)

phpMyAdminのインストール

いつもコマンドラインから操作するのは面倒なので、Webブラウザから操作できるphpMyAdminをインストールします。
# yum_remi install phpmyadmin
# yum_remi install php-pecl-mcrypt
「yum_remi」というコマンドは、EPELとRemiを有効化した自作スクリプトです。中身は以下のようになっています。ご参考までに。
#!/bin/sh
yum --enablerepo=epel,remi $@
このインストールで、PHPからMySQLを使うために必要なパッケージが一式入るので、phpMyAdminを使う予定がなくても、入れておくと後が楽になるかもしれません。

phpMyAdminの設定

設定ファイルの編集をします。

config.inc.php

まずはconfig.inc.phpに、暗号化用のパスフレーズを設定します。これをやらないと、phpMyAdmin上でエラーが表示されてしまいます。
設定ファイルに、暗号化 (blowfish_secret) 用の非公開パスフレーズの設定を必要とするようになりました。
設定ファイルはサンプルがあるので、それをコピーし、編集します。
# cp -a /usr/share/doc/phpMyAdmin-4.8.5/config.sample.inc.php /etc/phpMyAdmin/config.inc.php
# vi /etc/phpMyAdmin/config.inc.php
ファイルの先頭のあたりに、以下の行があります。
/**
* This is needed for cookie based authentication to encrypt password in
* cookie. Needs to be 32 chars long.
*/
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
「$cfg['blowfish_secret']」の値に、32桁以上のパスフレーズを入力します。英数字であれば何でもいいです。何なら、以下のコマンドでランダムな文字列を生成してしまいましょう。
# openssl rand -base64 100 | fold -w 32 | head -1

phpMyAdmin.conf

アクセス権に関する設定を行います。これをやらないと、phpMyAdminにアクセスできません。
# vi /etc/httpd/conf.d/phpMyAdmin.conf
16行目と30行目にある「Require local」の下に行を追加し、以下のように記述する
# Apache 2.4
Require local
Require ip 192.168.1.0/24 ← 追記
書き換えたら、Webサーバを再起動します。
# systemctl restart httpd
再起動したら、ブラウザからアクセス! URL例:http://centos7/phpmyadmin/ ログイン画面が表示されればOKです。 もし、以下のようなエラーが出てしまったら。
phpMyAdmin - Error
Error during session start; please check your PHP and/or webserver log file and configure your PHP installation properly. Also ensure that cookies are enabled in your browser.
session_start(): open(SESSION_FILE, O_RDWR) failed: Permission denied (13)
session_start(): Failed to read session data: files (path: /var/lib/php/session)
どうせ外に出ないローカル環境オンリーのサーバなので、セッション情報を保存するsessionディレクトリの権限を変えてしまいましょう。
# chmod 777 /var/lib/php/session
もうひとつ、以下のようなエラーが出ていたら。
$cfg['TempDir'] (/var/lib/phpMyAdmin/temp/) にアクセスできません。phpMyAdmin はテンプレートをキャッシュすることができないため、低速になります。
外に出ない(略)なので書き込み権限つけちゃいましょう。
# chmod 777 /var/lib/phpMyAdmin/temp

さいごに

以上で、MySQLおよびphpMyAdminのインストールと設定が終わりました。ここまでやっておけば、WordpressをインストールしてWebサイトのテスト環境が作れます! お疲れ様でした!
初稿:2019年2月18日
[CentOS] 不要PCにCentOS7.6をインストール
4年ほど前、サポートが切れて使わなくなったWindowsServer2003の本体を使って、テスト環境用にLinuxサーバを構築しました。 途中で何度かアップデートをし、現在はCentOS6.10+PHP5.6で動作しています。 しかし、こ...
[CentOS] CentOS7.6でtelnetが自動起動してくれない!
不要PCにCentOS7.6をインストールし、最低限の設定が終わったところまで、前回の記事でまとめました。 その日の作業が終わったところで、一旦PCの電源を切っていたのですが、翌日起動してみるとtelnetがつながらない!コンソールからログ...
[CentOS] CentOS7.6のyumリポジトリにEPELとRemiを追加
CentOS7.6には、PHPが5.4、MySQLは互換DBのMariaDB5.5が入っていました。 今回構築している環境は、公開前のWebサイトを構築するテストサーバ的な動作もさせたいので、本番用サーバと仕様を合わせたい。 本番用サーバで...
[CentOS] CentOS7.6にPHP7.3をインストール
CentOS7.6には、デフォルトでPHP5.4がインストールされます。 今となっては古いPHPになってしまいますが、商用ディストリビューションのRed Hat Enterprise Linux(RHEL)のソースを元に作られているCent...
[CentOS] CentOS7.6のSamba4で認証なし共有がうまくいかない
既存のCentOS6.10+Samba3.6の環境で、htdocsとshareのふたつのディレクトリを、認証なしで接続できるように設定しています。 その設定ファイルを、そのままCentOS7.6+Samba4.8の環境に持ってきたら、なぜか...

コメント

タイトルとURLをコピーしました