MySQL5.7 を CentOS 7 にインストール
MySQL Yum リポジトリを使用して MySQL を Linux にインストールするを参考にしながら、CentOS7に Yum を利用してMySQLのインストールを行う。
1.Yum リポジトリ
1.1 Yum リポジトリの取得
Download MySQL Yum Repository から、該当のリポジトリを探す。
RHEL と CentOS のメジャーバージョンは対応しているので、RHEL7のリポジトリを選択し、ダウンロードボタン。
遷移先の画面で、ログインを求められるが、左下に、直接ダウンロードするURLがリンク(No thanks just start my download) されているので、URLをコピーする。
インストール先のサーバーに接続し適当なディレクトリに上記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 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
validate_password_policyの初期値はMEDIUMで、パスワード設定に必要な条件は
MEDIUM ポリシーは、パスワードが最低 1 つの数値文字を含み、1 つの小文字および大文字を含み、1 つの特殊文字 (英数字以外) を含む必要があるという条件を追加します。
mysql> set password for root@localhost=password('Password@123'); Query OK, 0 rows affected, 1 warning (0.00 sec)
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 から接続
接続先ホストが許可されていない。
アクセス拒否のトラブルシュート
ID チェックは、
user
テーブルの 3 つのスコープカラム (Host
、User
、Password
) を使用して実施されます。サーバーは、一部の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)
接続成功
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)