MySQL5.7インストール CentOS7

CentOS

MySQL5.7インストール CentOS7

今回は、世界でもトップ3(2017/08/12時点)に入るデータベースである

MySQLのインストール方法をご紹介します。

 

構築環境

# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)

 

構築手順

では、さっそく始めていきたいと思います。

ユーザの確認

ユーザは、yumを実行するためroot を使用します。

# whoami
root

MariaDBのアンインストール

さっそくインストールを始めたいところですがその前に事前準備をしておきましょう。

CentOS7系のバージョンでは、MariaDB(MySQL と互換性を保ちながら独自機能えたDB)が事前にインストール済であるため、場合によって競合を起こす場合がありました。

事前に削除してからMySQLを起動しないと起動時にエラーを吐きDBが起動しませんのでご注意。

以下の手順で、MariaDBが入っているか確認し、入っている場合は事前にライブラリとディレクトリをアンインストールしておきましょう。

# rpm -aq|grep mariadb
mariadb-libs-5.5.52-1.el7.x86_64

# yum remove mariadb-libs

# rm -rf /var/lib/mysql/

MySQLのYUMレポジトリインストール

では事前準備も完了したので、インストールをしていきましょう。
まずは、MySQL  Download MySQL Yum Repositoryから最新のMySQLの yum リポジトリを追加しましょう。
今回は「http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm」を使用したいと思います。

# yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm

詳細情報の確認

以下コマンドでパッケージの詳細情報を確認してみましょう。

# yum info mysql-community-server
名前                : mysql-community-server
アーキテクチャー    : x86_64
バージョン          : 5.7.19
リリース            : 1.el7
容量                : 738 M
リポジトリー        : installed
提供元リポジトリー  : mysql57-community
要約                : A very fast and reliable SQL database server
URL                 : http://www.mysql.com/
......

MySQLインストール

上記コマンドで取得したバージョン5.7.19をインストールしましょう。
バージョンが確認できたらインストールできています。

# yum -y install mysql-community-server

# mysqld --version
mysqld  Ver 5.7.19 for Linux on x86_64 (MySQL Community Server (GPL))

自動起動の有効化

サーバー再起動時にMySQLの自動起動を有効化する場合は、以下コマンドを実行します。

# systemctl enable mysqld.service
Created symlink from /etc/systemd/system/multi-user.target.wants/mysqld.service to /usr/lib/systemd/system/mysqld.service.

# systemctl list-unit-files|grep mysqld.service
mysqld.service                                enabled

MySQLの起動

ではインストールしたMySQLを起動しましょう。
ここでエラーを吐かなければ大成功です。

もしエラーを吐いた場合はエラー内容を確認し、修正後、再度起動してください。
「Active: active (running)」と表示されていれば正常に起動されています。

# systemctl start mysqld.service

# systemctl status mysqld.service
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since 金 2017-08-11 13:17:05 PDT; 15h ago
....

MySQLパスワードを確認

いよいよ実際にDBへログインしていきたいと思いますが、管理者ユーザである root のパスワードがインストール後の初回起動時にランダム文字で「/var/log/mysqld.log」へ出力されていますので、まずはパスワードを確認しておきましょう。

以下コマンドで出力された文字列がパスワードとなります。
ログイン時に必要となりますので、覚えておいてください。

# cat /var/log/mysqld.log|grep pass|awk '{print $11}'

初期設定

せっかくなので、初期設定も入れておきましょう。
現在の設定ファイルのバックアップを取得して、初期設定を追記します。

その後、バックアップとの差分を取得して、追記した分が表示されればOKです。

# cp -p /etc/my.cnf /etc/my.cnf_default

# vi /etc/my.cnf
※以下設定を追記する。
--------------------------
skip-character-set-client-handshake
character-set-server = utf8
default_password_lifetime = 0


[mysql]
default-character-set = utf8
--------------------------

# sdiff -s /etc/my.cnf /etc/my.cnf_default
--------------------------
                                                              <
                                                              <
skip-character-set-client-handshake                           <
character-set-server = utf8                                   <
default_password_lifetime = 0                                 <
                                                              <
[mysql]                                                       <
default-character-set = utf8                                  <
--------------------------

 

かなりざっくり内容を説明しておくと

  • default_password_lifetime = 0」… パスワード有効期限の無効化
  •   character系のやつは日本語を使うための設定です。

詳細を気になる方は、以下のリンクを参照してみてください。

「skip-character-set-client-handshake」については、賛否両論のようなので入れる入れないは、各自の判断に任せます。

mysql_secure_installation

次に、初期設定やセキュリティ周りの設定を「mysql_secure_installation」で実施していきましょう。

コマンド結果のように、y を入力していけばOKです。
以下の作業を自動で行ってくれます。

  • root ユーザーのパスワードの変更
  • VALIDATE PASSWORD PLUGINのセットアップ
  • VALIDATE PASSWORD PLUGINポリシーに沿ったパスワード設定
  • anonymoususerの削除
  • リモートからのrootlogin禁止
  • testdatabaseの削除
  • 変更情報のリロード
# mysql_secure_installation
-----------------------------
Enter password for user root: 事前に確認した初期パスワードを入力する

The existing password for the user account root has expired. Please set a new password.

New password: 新しいパスワードを入力する

Re-enter new password: 確認のため再度パスワードを入力する

VALIDATE PASSWORD PLUGIN can be used to test passwords
 and improve security. It checks the strength of password
 and allows the users to set only those passwords which are
 secure enough. Would you like to setup VALIDATE PASSWORD plugin?

 Press y|Y for Yes, any other key for No: y

 There are three levels of password validation policy:
..
..
 Change the password for root ? ((Press y|Y for Yes, any other key for No) : y

 New password: ポリシーに沿ったパスワードを入力する

Re-enter new password: 再度パスワードを入力する


By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

 Remove anonymous users? (Press y|Y for Yes, any other key for No) : y


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

 Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y


By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


 Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y


Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

 Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y


All done!

MySQLログイン

さて、最後に正常にログインができることと
日本語が使える設定になっているかを確認して完了としましょう。

# mysql -uroot -p
Enter password:

mysql> show global variables like 'character%';
+--------------------------+----------------------------+
| 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/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

上記の結果のように、全部utf8になっていればOKです。

 

お疲れさまでした。
いかがでしょうか。しっかりとインストールできたでしょうか。
不明点等ございましたら、コメント欄からご連絡ください。

コメント