MySQL5.7 を CentOS 7 にインストール

MySQL Yum リポジトリを使用して MySQL を Linux にインストールするを参考にしながら、CentOS7に Yum を利用してMySQLのインストールを行う。

1.Yum リポジトリ

1.1 Yum リポジトリの取得

Download MySQL Yum Repository から、該当のリポジトリを探す。

mysql_inst01

RHEL と CentOS のメジャーバージョンは対応しているので、RHEL7のリポジトリを選択し、ダウンロードボタン。

遷移先の画面で、ログインを求められるが、左下に、直接ダウンロードするURLがリンク(No thanks just start my download) されているので、URLをコピーする。

mysql_inst02

インストール先のサーバーに接続し適当なディレクトリに上記URLからwgetでリポジトリRPMをダウンロード

$ wget http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

1.2 Yumリポジトリのインストール

$ su
パスワード:
# yum localinstall mysql57-community-release-el7-9.noarch.rpm

mysql_inst03

MySQL Yum リポジトリのすべてのサブリポジトリを表示し、どれが有効でどれが無効かを確認。デフォルトで最新GAが有効になっている。

# yum repolist all | grep mysql
mysql-connectors-community/x86_64 MySQL Connectors Community         有効:    30
mysql-connectors-community-source MySQL Connectors Community - Sourc 無効
mysql-tools-community/x86_64      MySQL Tools Community              有効:    40
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 - Sourc 無効
mysql56-community/x86_64          MySQL 5.6 Community Server         無効
mysql56-community-source          MySQL 5.6 Community Server - Sourc 無効
mysql57-community/x86_64          MySQL 5.7 Community Server         有効:   164
mysql57-community-source          MySQL 5.7 Community Server - Sourc 無効
mysql80-community/x86_64          MySQL 8.0 Community Server         無効
mysql80-community-source          MySQL 8.0 Community Server - Sourc 無効
  • 最新の GA シリーズの最新のリリースをインストールする場合は、構成は不要
  • 最新の GA シリーズ以外の特定のシリーズの最新リリースをインストールするには、インストールコマンドを実行する前に、最新の GA シリーズのサブリポジトリを無効にし、その特定のシリーズのサブリポジトリを有効にする。
  • 使用しているプラットフォームで yum-config-manager がサポートされている場合は、次のコマンドを発行することで実行可能
$ sudo yum-config-manager --disable mysql56-community
$ sudo yum-config-manager --enable mysql57-community-dmr

2.MySQLのインストール

2.1 Yumでインストール

# yum install mysql-community-server

2.2 MySQLの起動

# systemctl start  mysqld.service

2.3 接続

2.3.1 root パスワード

root パスワードが分からない。5.6 のときは、/root/.mysql_secret に出力されていたが、存在していない。

[root@localhost ~]# mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

MySQL 5.7をインストールしたら出てきたERROR 1045 (28000)の対処法

ログに出力されているようだ。パスワード部分をコピーしてログイン

[root@localhost ~]# cat /var/log/mysqld.log | grep 'password is generated'
2017-01-02T14:16:14.031813Z 1 [Note] A temporary password is generated for root@localhost: eOq=?fDX5kyy

mysql5.7でパスワードを変更する

2.3.2 セキュリティ設定

mysql_secure_installation を実行しセキュリティーポリシーを設定

[root@localhost ~]# mysql_secure_installation

Securing the MySQL server deployment.

Enter password for user 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) :

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

Disallow root login remotely? (Press y|Y for Yes, any other key for 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.


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

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

2.3.3 CentOS ファイアーウォール設定

外部から接続できないので、3306ポートを開ける

# firewall-cmd --permanent --zone=public --add-port=3306/tcp
success
# firewall-cmd --reload
success

2.3.4 別PCの MySQL Workbench から接続

接続先ホストが許可されていない。

mysql_inst04

アクセス拒否のトラブルシュート

アクセス制御、ステージ 1: 接続の検証

ID チェックは、user テーブルの 3 つのスコープカラム (HostUserPassword) を使用して実施されます。サーバーは、一部の user テーブル行の Host および User カラムがクライアントホスト名およびユーザー名と一致し、その行に指定されているパスワードがクライアントから提供された場合のみ、接続を受け入れます。許容可能な Hostおよび User 値についてのルールは、セクション6.2.3「アカウント名の指定」にあります。

任意のホストから接続できる、app ユーザー を作成。

パスワードが必須かつ、英大文字、小文字、数字、記号を含むパスワードしか受け付けてくれない。

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> create user 'app'@'%';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> create user 'app'@'%' identified by '*****';
Query OK, 0 rows affected (0.02 sec)
mysql> select user,host from user;
+-----------+-----------+
| user      | host      |
+-----------+-----------+
| app       | %         |
| mysql.sys | localhost |
| root      | localhost |
+-----------+-----------+
3 rows in set (0.00 sec)

接続成功

mysql_inst05

2.3.5 ユーザーに権限付与

管理者権限を付与して、Workbenchから接続

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

mysql_inst06