【丁寧に解説】MySQL5.7をCentOS7にインストールする方法

CentOS

MySQL5.7をCentOS7にインストールする方法

このページではMySQL5.7をCentOSへのサーバーとクライアントのインストールはもちろん、アンインストールや起動・再起動に加えて接続確認やセキュリティ対策など丁寧に解説しています。

mariaDBの削除

CentOS7にはmariaDB というDBが最初からインストールされていることが多いので削除します。競合して誤動作の原因となるのを防ぎます。

# systemctl stop mysqld
# yum -y remove mariadb-libs
# yum -y remove mysql-community-*
# rm -rf /var/lib/mysql/

MySQLのリポジトリをダウンロード

yumでインストールするためにMySQL公式のリポジトリを追加します。

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

2021/4現在、MySQL5.7系はel-11が最新版です。

リポジトリのバージョン調整

公式のyumリポジトリ
https://dev.mysql.com/downloads/repo/yum/

公式に掲載されているのは常に最新のリポジトリ。最新のリポジトリは過去のリポジトリもすべて含まれる。

ただ、デフォルトでインストールされるのが最新のMySQL8になってしまうので、以下のコマンドを使って取得先を過去のバージョンのものに調整するといい

対象リポジトリのコントロール

# yum repolist all | grep mysql
# yum-config-manager --disable mysql80-community
# yum-config-manager --enable mysql57-community
# 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 -  無効
mysql-cluster-7.6-community/x86_64   MySQL Cluster 7.6 Community    無効
mysql-cluster-7.6-community-source   MySQL Cluster 7.6 Community -  無効
mysql-connectors-community/x86_64    MySQL Connectors Community     有効:    203
mysql-connectors-community-source    MySQL Connectors Community - S 無効
mysql-tools-community/x86_64         MySQL Tools Community          有効:    129
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 - S 無効
mysql56-community/x86_64             MySQL 5.6 Community Server     無効
mysql56-community-source             MySQL 5.6 Community Server - S 無効
mysql57-community/x86_64             MySQL 5.7 Community Server     有効:    504 ←
mysql57-community-source             MySQL 5.7 Community Server - S 無効
mysql80-community/x86_64             MySQL 8.0 Community Server     無効
mysql80-community-source             MySQL 8.0 Community Server - S 無効

MySQL5.7をインストール

ダウンロードできるバージョンを確認

# yum list | grep mysql-community-server
mysql-community-server.x86_64              5.7.33-1.el7                mysql57-community

MySQLサーバーのインスト―ル

# yum -y install mysql-community-server

数分かかるかもしれません。

MySQLクライアントのインストール

サーバーだけでなくMySQLクライアントも一緒にインストールしておきましょう

# yum -y install mysql-community-client

MySQLバージョンの確認

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

MySQLのアンインストール

もしアンインストールしたい場合は以下を実行してください

# yum remove mysql-community-server

MySQLの自動起動設定

自動起動を有効に
# systemctl enable mysqld
自動起動が有効になったか確認
# systemctl is-enabled mysqld
enabled

くわしいMySQL設定(my.cnf)

このあと最低限の設定だけで起動することになりますが、ちょっと物足りません。
とりあえずはまず起動したいという場合は先に進んでください。

時間に余裕のある方は初回起動の前に先にこちらを参照して設定を見てみてください。

最低限のMySQL設定(my.cnf)

最低限のMySQL設定をしておきましょう。
my.cnfを編集します。

一応バックアップ
# cp /etc/my.cnf /etc/my.cnf.org

MySQL設定ファイル編集
# vi /etc/my.cnf

開いたファイルは

[****]という記述でブロックが区切られているので
[mysqld]というブロックの末尾に以下を追記。

~略~

[mysqld]

~略~

character-set-server=utf8      #
default_password_lifetime=0  #定期的なパスワード変更を無効(デフォルト360日・期限切れでログイン不可)

~略~

MySQLの起動と確認

mysqlサーバーを起動

# systemctl start mysqld

startをrestartとすれば再起動になります。

起動の確認

# ps auxw | grep mysqld

polkitd   56074  0.4  0.0 1115204  384 ?        Ssl  11:32   0:36 mysqld
mysql     59541  5.2 14.5 1122184 144868 ?      Sl   13:52   0:02 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
systemctlのstatusでも確認できます

# systemctl status mysqld
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since 日 2021-05-23 00:31:23 JST; 11min ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 28676 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
  Process: 28610 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 28679 (mysqld)
    Tasks: 27
   Memory: 300.1M
   CGroup: /system.slice/mysqld.service
           └─28679 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

 5月 23 00:31:17 localhost.localdomain systemd[1]: Starting MySQL Server...
 5月 23 00:31:23 localhost.localdomain systemd[1]: Started MySQL Server.

MySQLに接続

rootといえどパスワードなしでは入れません。
初期化された一時パスワードを確認

# grep "temporary password" `find /var/log/ -name "mysql*log"`
2021-04-02T04:52:06.661371Z 1 [Note] A temporary password is generated for root@localhost: YDuqeuU9o=_M

この行の最後がパスワードです。これを使ってrootログイン

MySQLにrootで接続

# mysql -uroot -p
Enter password: 


Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.33

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

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> 

rootパスワードの変更

これが出れば接続成功。
このままログインしてるので今すぐにパスワードを変えましょう。

8文字以上かつ英大文字・英小文字・数字・記号必須です!
厳しすぎる・・

mysql> SET PASSWORD = PASSWORD('●●●●●');
Query OK, 0 rows affected, 1 warning (0.09 sec)

OSのコマンドラインからもできます。

# mysqladmin --uroot password

my.cnf設定反映の確認

utf8が反映されたか確認

# mysql -uroot -p

mysql> show variables like "chara%";
+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+

MySQLのセキュリティ対策設定

MySQL5.7ではmysql_secure_installationというコマンドが用意されています。
yumでインストールした場合はすでに実行済みの状態です。

以下のような機能があります。

  • rootのパスワードの変更
  • validate_passwordプラグインのインストール
  • ポリシーに沿った rootパスワードの設定
  • anonymousユーザーの削除
  • リモートからrootログインの禁止
  • 最初に用意されているtestデータベース削除

※MySQL5.7.8からvalidate_passwordプラグインはデフォルトで有効

一応、インストール方法を示しておきます。

# mysql_secure_installation

コメント

  1. sk より:

    2022年1月18日よりGPGキーのインストールが必要となったようです。
    https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/

    $ sudo rpm –import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

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