概要
Vagrant + VirtualBoxのCentOS7にMySQLをインストールした記録。
yumによるMySQLサイトからのダウンロード実行などのほか、パスワード設定でちょっと時間がかかった。
インストール
参考にさせていただいたサイト:【最新版】CentOSにMySQLをインストールする方法
レポジトリーへの登録
予めコンソールでVagrantのCentOSを起動しておき、MySQL Community Downloadsサイトで以下の作業。
- Red Hat Enterprise Linux 7 / Oracle Linux 7 (Architecture Independent), RPM Packageの”Download”をクリック
- ダウンロードページの下部、”No thanks, just start my download.”を右クリックしてURLをコピー
- CentOSのコンソールでsuとして以下を実行して、yumレポジトリーに追加
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
[vagrant@localhost ~]$ sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm 読み込んだプラグイン:fastestmirror mysql80-community-release-el7-3.noarch.rpm | 25 kB 00:00 /var/tmp/yum-root-hTMBLt/mysql80-community-release-el7-3.noarch.rpm を調べています: mysql80-community-release-el7-3.noarch /var/tmp/yum-root-hTMBLt/mysql80-community-release-el7-3.noarch.rpm をインストール済みとして設定しています 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ mysql80-community-release.noarch 0:el7-3 を インストール --> 依存性解決を終了しました。 依存性を解決しました ================================================================================ Package アーキテクチャー バージョン リポジトリー 容量 ================================================================================ インストール中: mysql80-community-release noarch el7-3 /mysql80-community-release-el7-3.noarch 31 k トランザクションの要約 ================================================================================ インストール 1 パッケージ 合計容量: 31 k インストール容量: 31 k Is this ok [y/d/N]: y Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction インストール中 : mysql80-community-release-el7-3.noarch 1/1 検証中 : mysql80-community-release-el7-3.noarch 1/1 インストール: mysql80-community-release.noarch 0:el7-3 完了しました! |
レポジトリーの確認
MySQLがレポジトリーにあることを確認。レポジトリーは/etc/yum.repos.d/
に格納されている。
mysql-community-source.repo
とmysql-community.repo
の2つが確認できる。
1 2 3 4 5 |
[vagrant@localhost ~]$ ls /etc/yum.repos.d/ CentOS-Base.repo CentOS-Sources.repo mysql-community-source.repo CentOS-CR.repo CentOS-Vault.repo mysql-community.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-x86_64-kernel.repo |
MySQLのインストール
まだMySQLはレポジトリーに登録されただけなので、suでyum
を使ってインストール。4分ほどかかった。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
[vagrant@localhost ~]$ sudo yum install mysql-community-server 読み込んだプラグイン:fastestmirror Loading mirror speeds from cached hostfile * base: ftp.jaist.ac.jp * extras: ftp.jaist.ac.jp * updates: ftp.jaist.ac.jp base | 3.6 kB 00:00 extras | 2.9 kB 00:00 mysql-connectors-community | 2.6 kB 00:00 mysql-tools-community | 2.6 kB 00:00 mysql80-community | 2.6 kB 00:00 updates | 2.9 kB 00:00 (1/3): mysql80-community/x86_64/primary_db | 142 kB 00:00 (2/3): mysql-tools-community/x86_64/primary_db | 85 kB 00:00 (3/3): mysql-connectors-community/x86_64/primary_db | 72 kB 00:00 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ mysql-community-server.x86_64 0:8.0.23-1.el7 を インストール --> 依存性の処理をしています: mysql-community-common(x86-64) = 8.0.23-1.el7 のパッケージ: mysql-community-server-8.0.23-1.el7.x86_64 --> 依存性の処理をしています: mysql-community-client(x86-64) >= 8.0.11 のパッケ ージ: mysql-community-server-8.0.23-1.el7.x86_64 --> トランザクションの確認を実行しています。 ---> パッケージ mysql-community-client.x86_64 0:8.0.23-1.el7 を インストール --> 依存性の処理をしています: mysql-community-client-plugins = 8.0.23-1.el7 のパッケージ: mysql-community-client-8.0.23-1.el7.x86_64 --> 依存性の処理をしています: mysql-community-libs(x86-64) >= 8.0.11 のパッケー ジ: mysql-community-client-8.0.23-1.el7.x86_64 ---> パッケージ mysql-community-common.x86_64 0:8.0.23-1.el7 を インストール --> トランザクションの確認を実行しています。 ---> パッケージ mariadb-libs.x86_64 1:5.5.65-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 ---> パッケージ mysql-community-client-plugins.x86_64 0:8.0.23-1.el7 を インストール ---> パッケージ mysql-community-libs.x86_64 0:8.0.23-1.el7 を 非推奨 --> トランザクションの確認を実行しています。 ---> パッケージ mysql-community-libs-compat.x86_64 0:8.0.23-1.el7 を 非推奨 --> 依存性解決を終了しました。 依存性を解決しました ================================================================================ Package アーキテクチャー バージョン リポジトリー 容量 ================================================================================ インストール中: mysql-community-libs x86_64 8.0.23-1.el7 mysql80-community 4.6 M mariadb-libs.x86_64 1:5.5.65-1.el7 を入れ替えます mysql-community-libs-compat x86_64 8.0.23-1.el7 mysql80-community 1.2 M mariadb-libs.x86_64 1:5.5.65-1.el7 を入れ替えます mysql-community-server x86_64 8.0.23-1.el7 mysql80-community 518 M 依存性関連でのインストールをします: mysql-community-client x86_64 8.0.23-1.el7 mysql80-community 48 M mysql-community-client-plugins x86_64 8.0.23-1.el7 mysql80-community 237 k mysql-community-common x86_64 8.0.23-1.el7 mysql80-community 621 k トランザクションの要約 ================================================================================ インストール 3 パッケージ (+3 個の依存関係のパッケージ) 総ダウンロード容量: 573 M Is this ok [y/d/N]: y Downloading packages: 警告: /var/cache/yum/x86_64/7/mysql80-community/packages/mysql-community-client-plugins-8.0.23-1.el7.x86_64.rpm: ヘッダー V3 DSA/SHA1 Signature、鍵 ID 5072e1f5: NOKEY mysql-community-client-plugins-8.0.23-1.el7.x86_64.rpm の公開鍵がインストールさ れていません (1/6): mysql-community-client-plugins-8.0.23-1.el7.x86_64. | 237 kB 00:00 (2/6): mysql-community-common-8.0.23-1.el7.x86_64.rpm | 621 kB 00:00 (3/6): mysql-community-libs-8.0.23-1.el7.x86_64.rpm | 4.6 MB 00:00 (4/6): mysql-community-libs-compat-8.0.23-1.el7.x86_64.rpm | 1.2 MB 00:00 (5/6): mysql-community-client-8.0.23-1.el7.x86_64.rpm | 48 MB 00:03 (6/6): mysql-community-server-8.0.23-1.el7.x86_64.rpm | 518 MB 00:23 -------------------------------------------------------------------------------- 合計 24 MB/s | 573 MB 00:24 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql から鍵を取得中です。 Importing GPG key 0x5072E1F5: Userid : "MySQL Release Engineering <mysql-build@oss.oracle.com>" Fingerprint: a4a9 4068 76fc bd3c 4567 70c8 8c71 8d3b 5072 e1f5 Package : mysql80-community-release-el7-3.noarch (@/mysql80-community-release-el7-3.noarch) From : /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql 上記の処理を行います。よろしいでしょうか? [y/N]y Running transaction check Running transaction test Transaction test succeeded Running transaction インストール中 : mysql-community-common-8.0.23-1.el7.x86_64 1/7 インストール中 : mysql-community-client-plugins-8.0.23-1.el7.x 2/7 インストール中 : mysql-community-libs-8.0.23-1.el7.x86_64 3/7 インストール中 : mysql-community-client-8.0.23-1.el7.x86_64 4/7 インストール中 : mysql-community-server-8.0.23-1.el7.x86_64 5/7 インストール中 : mysql-community-libs-compat-8.0.23-1.el7.x86_ 6/7 削除中 : 1:mariadb-libs-5.5.65-1.el7.x86_64 7/7 検証中 : mysql-community-client-8.0.23-1.el7.x86_64 1/7 検証中 : mysql-community-libs-compat-8.0.23-1.el7.x86_ 2/7 検証中 : mysql-community-libs-8.0.23-1.el7.x86_64 3/7 検証中 : mysql-community-client-plugins-8.0.23-1.el7.x 4/7 検証中 : mysql-community-server-8.0.23-1.el7.x86_64 5/7 検証中 : mysql-community-common-8.0.23-1.el7.x86_64 6/7 検証中 : 1:mariadb-libs-5.5.65-1.el7.x86_64 7/7 インストール: mysql-community-libs.x86_64 0:8.0.23-1.el7 mysql-community-libs-compat.x86_64 0:8.0.23-1.el7 mysql-community-server.x86_64 0:8.0.23-1.el7 依存性関連をインストールしました: mysql-community-client.x86_64 0:8.0.23-1.el7 mysql-community-client-plugins.x86_64 0:8.0.23-1.el7 mysql-community-common.x86_64 0:8.0.23-1.el7 置換: mariadb-libs.x86_64 1:5.5.65-1.el7 完了しました! |
インストール確認
インストールされたMySQLのバージョンを確認。
1 2 |
[vagrant@localhost ~]$ mysql --version mysql Ver 8.0.23 for Linux on x86_64 (MySQL Community Server - GPL) |
MySQLの起動・停止
インストール直後の停止状態確認
状態確認は一般ユーザーでもsystemctl
で可能。
1 2 3 4 5 6 |
[vagrant@localhost ~]$ systemctl status mysqld ● mysqld.service - MySQL Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: inactive (dead) Docs: man:mysqld(8) http://dev.mysql.com/doc/refman/en/using-systemd.html |
MySQLサーバーの起動
起動するにはsuとしてsystemctl
を実行する必要がある。
1 |
[vagrant@localhost ~]$ sudo systemctl start mysqld |
起動状態の確認
1 2 3 4 5 6 7 8 9 10 11 |
[vagrant@localhost ~]$ systemctl status mysqld ● mysqld.service - MySQL Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: active (running) since 水 2021-02-24 22:02:36 JST; 1min 18s ago Docs: man:mysqld(8) http://dev.mysql.com/doc/refman/en/using-systemd.html Process: 3855 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS) Main PID: 3931 (mysqld) Status: "Server is operational" CGroup: /system.slice/mysqld.service └─3931 /usr/sbin/mysqld |
MySQLサーバーの停止
停止するにはsuとしてsystemctl
を実行する必要がある。
1 |
[vagrant@localhost ~]$ sudo systemctl stop mysqld |
パスワードの変更
初期状態でパスワードがわからない
MySQLインストール直後にrootでログインしようとしたとき、パスワードがわからずログインできなかった。
1 2 3 |
[vagrant@localhost ~]$ mysql -u root -p Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) |
ログファイルの確認
初期パスワードはログファイルに残されているとのことで、ログからパスワードを確認。
参考にさせていただいたサイト:MySQL 5.7 をインストールしたら最初に行うセットアップ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
[vagrant@localhost ~]$ sudo cat /var/log/mysqld.log 2021-02-24T13:02:26.971954Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.23) initializing of server in progress as process 3886 2021-02-24T13:02:26.996117Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 2021-02-24T13:02:28.192700Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. 2021-02-24T13:02:30.637069Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: *lgAhfrei14z 2021-02-24T13:02:34.919538Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.23) starting as process 3931 2021-02-24T13:02:34.959485Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 2021-02-24T13:02:35.576877Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. 2021-02-24T13:02:35.861735Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock 2021-02-24T13:02:36.232357Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. 2021-02-24T13:02:36.232866Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel. 2021-02-24T13:02:36.291310Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.23' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Server - GPL. 2021-02-24T13:05:18.091708Z 0 [System] [MY-013172] [Server] Received SHUTDOWN from user <via user signal>. Shutting down mysqld (Version: 8.0.23). 2021-02-24T13:05:19.449527Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.23) MySQL Community Server - GPL. 2021-02-24T13:06:21.311866Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.23) starting as process 4099 2021-02-24T13:06:21.337118Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 2021-02-24T13:06:21.919265Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. 2021-02-24T13:06:22.233315Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock 2021-02-24T13:06:22.439130Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. 2021-02-24T13:06:22.439818Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel. 2021-02-24T13:06:22.488668Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.23' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Server - GPL. |
ログイン成功
このパスワードを入力して無事ログイン。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[vagrant@localhost ~]$ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 13 Server version: 8.0.23 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. |
最初のパスワード変更(強い制約)
CentOSのコマンドラインからmysql_secure_installation
でパスワードを変更。このとき、デフォルトでパスワードに強い制約がかかっていて戸惑った。
- ルートのパスワードを変更するか
- anonymusユーザーを消すかどうか
- リモートでのrootのログインを禁止するかどうか
- テスト用のデータベースを削除するかどうか
- 権限テーブルを再読み込みするかどうか
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
[vagrant@localhost ~]$ 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: The 'validate_password' component is installed on the server. The subsequent steps will run with the existing configuration of the component. 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: 25 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y ... Failed! Error: Your password does not satisfy the current policy requirements 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. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y Success. 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 - 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! |
パスワード制約条件の変更
この時点のバージョンでは、パスワード検証の変数名がネット上の情報と少し違っていた。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
mysql> show global variables like 'validate_password%'; +--------------------------------------+--------+ | Variable_name | Value | +--------------------------------------+--------+ | validate_password.check_user_name | ON | | 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) |
パスワード制約の変更
パスワード制約の強度を一番低くし、文字数を6文字以上とした。
1 2 3 4 5 |
mysql> SET GLOBAL validate_password.policy=LOW; Query OK, 0 rows affected (0.00 sec) mysql> SET GLOBAL validate_password.length=6; Query OK, 0 rows affected (0.00 sec) |
MySQLのUPDATEはエラー
MySQLのUPDATEでパスワード変更しようとしたが文法エラーで通らない。
1 2 |
mysql> UPDATE mysql.user SET password=password('******') WHERE user='root'; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '('******') WHERE user='root'' at line 1 |
mysqladminでパスワード変更に成功
CentOSのコマンドラインに戻ってmysqladmin
を試したところ、パスワード変更に成功。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
[vagrant@localhost ~]$ mysqladmin -u root password '******' -p Enter password: mysqladmin: [Warning] Using a password on the command line interface can be insecure. Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety. [vagrant@localhost ~]$ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 24 Server version: 8.0.23 MySQL Community Server - GPL 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. |