MySQL

MySQL install

当サイトがお世話になっているXserverのwordpressにて効率よく投稿一覧をを調べるにはどうしても直接SQLを叩くのが一番です。これまでほとんど触った事のなかったMySQLですが、これをきっかけに、CentOS7へMySQL 5.7.39インストールしました。(現状XserverのwordpressはMySQL5.7xで動作しているためです)

MySQL 5.7xのダウンロード

以下サイトからダウンロードしました。
https://downloads.mysql.com/archives/community/
現状5.7xで最もあたらしいものが以下でした。
mysql-5.7.39-1.el7.x86_64.rpm-bundle.tar

MariaDBの削除

CentOS7からはMariaDBが最初から入っているらしくMySQLをインストールするにはこれを事前に削除する必要があるとの事です。(削除しないと競合が発生しうまくセットアップできないとの事)

rpm -qa |grep mariadb
[root@vm103 tmp]# rpm -qa |grep mariadb
mariadb-libs-5.5.68-1.el7.x86_64     <-- たしかに入っていました
[root@vm103 tmp]#


[root@vm103 tmp]# yum list installed | grep mariadb
mariadb-libs.x86_64                         1:5.5.68-1.el7             @anaconda   <-- リポジトリもあります
[root@vm103 tmp]#
yum remove を使いMariaDB関連パッケージ削除
yum remove -y mariadb-libs
[root@vm103 tmp]# yum remove -y mariadb-libs
読み込んだプラグイン:fastestmirror, langpacks
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ mariadb-libs.x86_64 1:5.5.68-1.el7 を 削除
--> 依存性の処理をしています: libmysqlclient.so.18()(64bit) のパッケージ: 2:postfix-2.10.1-9.el7.x86_64
--> 依存性の処理をしています: libmysqlclient.so.18(libmysqlclient_18)(64bit) のパッケージ: 2:postfix-2.10.1-9.el7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ postfix.x86_64 2:2.10.1-9.el7 を 削除
--> 依存性解決を終了しました。

依存性を解決しました

====================================================================================================================================
 Package                          アーキテクチャー           バージョン                         リポジトリー                   容量
====================================================================================================================================
削除中:
 mariadb-libs                     x86_64                     1:5.5.68-1.el7                     @anaconda                     4.4 M
依存性関連での削除をします:
 postfix                          x86_64                     2:2.10.1-9.el7                     @anaconda                      12 M

トランザクションの要約
====================================================================================================================================
削除  1 パッケージ (+1 個の依存関係のパッケージ)

インストール容量: 17 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  削除中                  : 2:postfix-2.10.1-9.el7.x86_64                                                                       1/2
  削除中                  : 1:mariadb-libs-5.5.68-1.el7.x86_64                                                                  2/2
  検証中                  : 1:mariadb-libs-5.5.68-1.el7.x86_64                                                                  1/2
  検証中                  : 2:postfix-2.10.1-9.el7.x86_64                                                                       2/2

削除しました:
  mariadb-libs.x86_64 1:5.5.68-1.el7

依存性の削除をしました:
  postfix.x86_64 2:2.10.1-9.el7

完了しました!
[root@vm103 tmp]#
yum localinstall にてインストール
yum localinstall mysql-community-*
[root@vm103 tmp]# yum localinstall mysql-community-*
読み込んだプラグイン:fastestmirror, langpacks
mysql-community-client-5.7.39-1.el7.x86_64.rpm を調べています: mysql-community-client-5.7.39-1.el7.x86_64
mysql-community-client-5.7.39-1.el7.x86_64.rpm をインストール済みとして設定しています
mysql-community-common-5.7.39-1.el7.x86_64.rpm を調べています: mysql-community-common-5.7.39-1.el7.x86_64
mysql-community-common-5.7.39-1.el7.x86_64.rpm をインストール済みとして設定しています
mysql-community-devel-5.7.39-1.el7.x86_64.rpm を調べています: mysql-community-devel-5.7.39-1.el7.x86_64
mysql-community-devel-5.7.39-1.el7.x86_64.rpm をインストール済みとして設定しています
mysql-community-embedded-5.7.39-1.el7.x86_64.rpm を調べています: mysql-community-embedded-5.7.39-1.el7.x86_64
mysql-community-embedded-5.7.39-1.el7.x86_64.rpm をインストール済みとして設定しています
mysql-community-embedded-compat-5.7.39-1.el7.x86_64.rpm を調べています: mysql-community-embedded-compat-5.7.39-1.el7.x86_64
mysql-community-embedded-compat-5.7.39-1.el7.x86_64.rpm をインストール済みとして設定しています
mysql-community-embedded-devel-5.7.39-1.el7.x86_64.rpm を調べています: mysql-community-embedded-devel-5.7.39-1.el7.x86_64
mysql-community-embedded-devel-5.7.39-1.el7.x86_64.rpm をインストール済みとして設定しています
mysql-community-libs-5.7.39-1.el7.x86_64.rpm を調べています: mysql-community-libs-5.7.39-1.el7.x86_64
mysql-community-libs-5.7.39-1.el7.x86_64.rpm をインストール済みとして設定しています
mysql-community-libs-compat-5.7.39-1.el7.x86_64.rpm を調べています: mysql-community-libs-compat-5.7.39-1.el7.x86_64
mysql-community-libs-compat-5.7.39-1.el7.x86_64.rpm をインストール済みとして設定しています
mysql-community-server-5.7.39-1.el7.x86_64.rpm を調べています: mysql-community-server-5.7.39-1.el7.x86_64
mysql-community-server-5.7.39-1.el7.x86_64.rpm をインストール済みとして設定しています
mysql-community-test-5.7.39-1.el7.x86_64.rpm を調べています: mysql-community-test-5.7.39-1.el7.x86_64
mysql-community-test-5.7.39-1.el7.x86_64.rpm をインストール済みとして設定しています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ mysql-community-client.x86_64 0:5.7.39-1.el7 を インストール
---> パッケージ mysql-community-common.x86_64 0:5.7.39-1.el7 を インストール
---> パッケージ mysql-community-devel.x86_64 0:5.7.39-1.el7 を インストール
---> パッケージ mysql-community-embedded.x86_64 0:5.7.39-1.el7 を インストール
---> パッケージ mysql-community-embedded-compat.x86_64 0:5.7.39-1.el7 を インストール
---> パッケージ mysql-community-embedded-devel.x86_64 0:5.7.39-1.el7 を インストール
---> パッケージ mysql-community-libs.x86_64 0:5.7.39-1.el7 を インストール
---> パッケージ mysql-community-libs-compat.x86_64 0:5.7.39-1.el7 を インストール
---> パッケージ mysql-community-server.x86_64 0:5.7.39-1.el7 を インストール
---> パッケージ mysql-community-test.x86_64 0:5.7.39-1.el7 を インストール
--> 依存性の処理をしています: perl(JSON) のパッケージ: mysql-community-test-5.7.39-1.el7.x86_64
Loading mirror speeds from cached hostfile
 * base: ftp-srv2.kddilabs.jp
 * extras: ftp-srv2.kddilabs.jp
 * updates: ftp-srv2.kddilabs.jp
--> 依存性の処理をしています: perl(JSON) のパッケージ: mysql-community-test-5.7.39-1.el7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ perl-JSON.noarch 0:2.59-2.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

====================================================================================================================================
 Package                              アーキテクチャー
                                                  バージョン        リポジトリー                                               容量
====================================================================================================================================
インストール中:
 mysql-community-client               x86_64      5.7.39-1.el7      /mysql-community-client-5.7.39-1.el7.x86_64               107 M
 mysql-community-common               x86_64      5.7.39-1.el7      /mysql-community-common-5.7.39-1.el7.x86_64               2.8 M
 mysql-community-devel                x86_64      5.7.39-1.el7      /mysql-community-devel-5.7.39-1.el7.x86_64                 24 M
 mysql-community-embedded             x86_64      5.7.39-1.el7      /mysql-community-embedded-5.7.39-1.el7.x86_64             201 M
 mysql-community-embedded-compat      x86_64      5.7.39-1.el7      /mysql-community-embedded-compat-5.7.39-1.el7.x86_64       88 M
 mysql-community-embedded-devel       x86_64      5.7.39-1.el7      /mysql-community-embedded-devel-5.7.39-1.el7.x86_64       905 M
 mysql-community-libs                 x86_64      5.7.39-1.el7      /mysql-community-libs-5.7.39-1.el7.x86_64                  10 M
 mysql-community-libs-compat          x86_64      5.7.39-1.el7      /mysql-community-libs-compat-5.7.39-1.el7.x86_64          5.9 M
 mysql-community-server               x86_64      5.7.39-1.el7      /mysql-community-server-5.7.39-1.el7.x86_64               773 M
 mysql-community-test                 x86_64      5.7.39-1.el7      /mysql-community-test-5.7.39-1.el7.x86_64                 670 M
依存性関連でのインストールをします:
 perl-JSON                            noarch      2.59-2.el7        base                                                       96 k

トランザクションの要約
====================================================================================================================================
インストール  10 パッケージ (+1 個の依存関係のパッケージ)

合計容量: 2.7 G
総ダウンロード容量: 96 k
インストール容量: 2.7 G
Is this ok [y/d/N]: y
Downloading packages:
警告: /var/cache/yum/x86_64/7/base/packages/perl-JSON-2.59-2.el7.noarch.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID f4a80eb5: NOKEY
perl-JSON-2.59-2.el7.noarch.rpm の公開鍵がインストールされていません
perl-JSON-2.59-2.el7.noarch.rpm                                                                              |  96 kB  00:00:00
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 から鍵を取得中です。
Importing GPG key 0xF4A80EB5:
 Userid     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
 Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
 Package    : centos-release-7-9.2009.0.el7.centos.x86_64 (@anaconda)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
上記の処理を行います。よろしいでしょうか? [y/N]y
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : mysql-community-common-5.7.39-1.el7.x86_64                                                         1/11
  インストール中          : mysql-community-libs-5.7.39-1.el7.x86_64                                                           2/11
  インストール中          : mysql-community-client-5.7.39-1.el7.x86_64                                                         3/11
  インストール中          : mysql-community-server-5.7.39-1.el7.x86_64                                                         4/11
  インストール中          : mysql-community-devel-5.7.39-1.el7.x86_64                                                          5/11
  インストール中          : mysql-community-embedded-5.7.39-1.el7.x86_64                                                       6/11
  インストール中          : perl-JSON-2.59-2.el7.noarch                                                                        7/11
  インストール中          : mysql-community-test-5.7.39-1.el7.x86_64                                                           8/11
  インストール中          : mysql-community-embedded-devel-5.7.39-1.el7.x86_64                                                 9/11
  インストール中          : mysql-community-libs-compat-5.7.39-1.el7.x86_64                                                   10/11
  インストール中          : mysql-community-embedded-compat-5.7.39-1.el7.x86_64                                               11/11
  検証中                  : mysql-community-client-5.7.39-1.el7.x86_64                                                         1/11
  検証中                  : mysql-community-devel-5.7.39-1.el7.x86_64                                                          2/11
  検証中                  : mysql-community-server-5.7.39-1.el7.x86_64                                                         3/11
  検証中                  : mysql-community-common-5.7.39-1.el7.x86_64                                                         4/11
  検証中                  : mysql-community-embedded-compat-5.7.39-1.el7.x86_64                                                5/11
  検証中                  : mysql-community-libs-compat-5.7.39-1.el7.x86_64                                                    6/11
  検証中                  : mysql-community-libs-5.7.39-1.el7.x86_64                                                           7/11
  検証中                  : mysql-community-embedded-5.7.39-1.el7.x86_64                                                       8/11
  検証中                  : mysql-community-test-5.7.39-1.el7.x86_64                                                           9/11
  検証中                  : mysql-community-embedded-devel-5.7.39-1.el7.x86_64                                                10/11
  検証中                  : perl-JSON-2.59-2.el7.noarch                                                                       11/11

インストール:
  mysql-community-client.x86_64 0:5.7.39-1.el7                      mysql-community-common.x86_64 0:5.7.39-1.el7
  mysql-community-devel.x86_64 0:5.7.39-1.el7                       mysql-community-embedded.x86_64 0:5.7.39-1.el7
  mysql-community-embedded-compat.x86_64 0:5.7.39-1.el7             mysql-community-embedded-devel.x86_64 0:5.7.39-1.el7
  mysql-community-libs.x86_64 0:5.7.39-1.el7                        mysql-community-libs-compat.x86_64 0:5.7.39-1.el7
  mysql-community-server.x86_64 0:5.7.39-1.el7                      mysql-community-test.x86_64 0:5.7.39-1.el7

依存性関連をインストールしました:
  perl-JSON.noarch 0:2.59-2.el7

完了しました!
[root@vm103 tmp]#

サービスの起動

systemctlにてサービス起動
systemctl start mysqld.service
[root@vm103 tmp]# systemctl start mysqld.service
[root@vm103 tmp]# service mysqld status
Redirecting to /bin/systemctl status mysqld.service
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since 日 2022-09-25 00:24:06 JST; 4s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 782 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
  Process: 743 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 785 (mysqld)
    Tasks: 27
   CGroup: /system.slice/mysqld.service
           mq785 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

 9月 25 00:24:04 vm103.box systemd[1]: Starting MySQL Server...
 9月 25 00:24:06 vm103.box systemd[1]: Started MySQL Server.
[root@vm103 tmp]#

初回起動タイミングで「初期パスワード生成」されます

実はこの情報にたどり着くまで少し手間取ったのですが、最初のサービス起動タイミングでMySQLログファイルに「初期パスワード」が出力されているので、このパスワードを使い新規パスワードを設定する必要があります。

grep 'temporary password' /var/log/mysqld.log
[root@vm103 tmp]# grep 'temporary password' /var/log/mysqld.log
2022-09-24T15:18:59.655348Z 1 [Note] A temporary password is generated for root@localhost: b>ZkEoCq/6j*
[root@vm103 tmp]# mysql_secure_installation

Securing the MySQL server deployment.

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:

-- rootユーザのパスワード設定
The 'validate_password' plugin is installed on the server.
The subsequent steps will run with the existing configuration
of the plugin.
Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : y
New password:

Re-enter new password:

Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
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
Success.


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

-- 私はリモートでもrootから接続したいのでここではNoにします
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : no

 ... skipping.
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.


-- test用DBを削除
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

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
Success.

All done!
[root@vm103 tmp]#

mysqlコマンドで接続する

-pの後ろにそのままパスワードを続ける事も可能です。(コマンドヒストリーに残る事ご注意ください)

[root@vm103 ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.39 MySQL Community Server (GPL)

Copyright (c) 2000, 2022, 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>

パスワードポリシーが厳しすぎる、、

mysql> show global variables like 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_check_user_name    | OFF    |
| validate_password_dictionary_file    |        |
| validate_password_length             | 8      |
| validate_password_mixed_case_count   | 1      |
| validate_password_number_count       | 1      |
| validate_password_policy             | MEDIUM |
| validate_password_special_char_count | 1      |
+--------------------------------------+--------+
7 rows in set (0.01 sec)

mysql> set global validate_password_length=6;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_policy=LOW;
Query OK, 0 rows affected (0.00 sec)

mysql> show global variables like 'validate_password%';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password_check_user_name    | OFF   |
| validate_password_dictionary_file    |       |
| validate_password_length             | 6     |
| validate_password_mixed_case_count   | 1     |
| validate_password_number_count       | 1     |
| validate_password_policy             | LOW   |
| validate_password_special_char_count | 1     |
+--------------------------------------+-------+
7 rows in set (0.01 sec)

mysql>
パスワード変更
mysql> set password for root@localhost = 'soopas';
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye

ポート開放

[root@vm103 ~]# firewall-cmd --state
running
[root@vm103 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3 enp0s8
  sources:
  services: dhcpv6-client ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

[root@vm103 ~]# firewall-cmd --add-port=3306/tcp --zone=public --permanent
success
[root@vm103 ~]# firewall-cmd --reload
success
[root@vm103 ~]# firewall-cmd --list-all --zone=public
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3 enp0s8
  sources:
  services: dhcpv6-client ssh
  ports: 3306/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

[root@vm103 ~]#

rootユーザもリモートで接続可能にする

mysql> select user, host from mysql.user;
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| mysql.session | localhost |
| mysql.sys     | localhost |
| root          | localhost |
+---------------+-----------+
3 rows in set (0.00 sec)

mysql> grant all privileges
    -> on *.* to root@"%"
    -> identified by 'soopass' with grant option;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> select user, host from mysql.user;
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| root          | %         |
| mysql.session | localhost |
| mysql.sys     | localhost |
| root          | localhost |
+---------------+-----------+
4 rows in set (0.00 sec)

mysql>
スポンサーリンク