目的
- 記事名に記載したMySQLを起動するコマンドの違いが分からずモヤモヤ認め簡単に調べてまとめる。
実施環境
- ハードウェア環境
項目 | 情報 |
---|---|
OS | macOS Catalina(10.15.5) |
ハードウェア | MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) |
プロセッサ | 2 GHz クアッドコアIntel Core i5 |
メモリ | 32 GB 3733 MHz LPDDR4 |
グラフィックス | Intel Iris Plus Graphics 1536 MB |
- ソフトウェア環境
項目 | 情報 | 備考 |
---|---|---|
MySQLバージョン | 8.0.19 for osx10.15 on x86_64 (Homebrew) | Homwbrewを用いて導入 |
この記事より詳しくてわかりやすい参考文献
ことの発端
- AWS EC2 AmazonLinux2 インスタンスにて
$ mysql.server start
コマンドを実行したがMySQLを起動することができなかった。 - MySQLのサーバを起動するコマンドを探していたところ技術ブログやQiitaなどで複数のコマンドでMySQLは起動できることがわかった。
- 同じMySQLの起動なのにどうしていろいろなコマンドで起動できるのか気になった。
$ mysql.server start
コマンド
-
筆者がMacのローカル環境にあるMySQLを起動する際に最もよく使用するコマンドである。
-
$ mysql.server オプション
のコマンドに関しては下記の様な記載があった。(先に記載した参考文献のページより抜粋)On systems that use System V-style run directories (that is, /etc/init.d and run-level specific directories), invoke mysql.server. This script is used primarily at system startup and shutdown. It usually is installed under the name mysql. The mysql.server script starts the server by invoking mysqld_safe. See Section 4.3.3, “mysql.server — MySQL Server Startup Script”.
-
先の内容の訳を下記に記載する。
System Vスタイルの実行ディレクトリ(つまり、/ etc / init.dおよび実行レベル固有のディレクトリ)を使用するシステムでは、mysql.serverを呼び出します。 このスクリプトは、主にシステムの起動時とシャットダウン時に使用されます。 通常、mysqlという名前でインストールされます。 mysql.serverスクリプトは、mysqld_safeを呼び出してサーバーを起動します。 セクション4.3.3「mysql.server — MySQLサーバー起動スクリプト」を参照してください。
-
まとめると「とある実行ディレクトリ(/etc/init.d)を使用するシステム上では
$ mysql.server
コマンドを使用してMySQLの起動、停止を行うことができる。」と言った感じである。 -
/etc/init.d
のディレクトリの実行ファイルを使用して動いているシステム上では$ mysql.server オプション
コマンドを使用することができる様だ。(おそらく) -
さらに詳しく記載された公式ドキュメント→4.3.3 mysql.server — MySQL Server Startup Script
$ sudo systemctl start mysqld
コマンド
-
AWS EC2 AmazonLinux2のインスタンスの中でMySQLを起動する際に使用するコマンドである。
-
$ systemctl start mysqld
コマンドに関しては下記の様な記載があった。Invoke mysqld directly. This works on any platform.
-
先の内容の訳を下記に記載する。
mysqldを直接 呼び出します。これはどのプラットフォームでも機能します。
-
まとめると「mysqldと直接起動、停止することができ、環境に依存することなく実行することができる。」と行った感じである。
-
mysqldはMySQLサーバとも呼ばれており、これはMySQLのメインプログラムと行っても過言ではないほど多くの仕事をしている。
-
MySQL内に
create database
で作成されたDBやそのテーブへのアクセス管理などもmysqldが実施している。 -
よって本コマンドはMySQLの中核的なメインプログラムを直接起動、停止するコマンドということになる(おそらく)
-
さらに詳しく記載されたドキュメント群
まとめ
-
下記にMySQLの起動、停止を行うコマンドで自分に関係しそうな物の使用条件を表でまとめる。
コマンド 使用システムの実行ディレクトリ /etc/init.d
の環境使用システムの実行ディレクトリ /etc/init.d
以外の環境$ mysql.server start
コマンド実行できる 実行できる $ sudo systemctl start mysqld
コマンド実行できる 実行できる -
$ sudo systemctl start mysqld
コマンドなら環境に依存せずにMySQLの起動を行うことが可能であるので、MySQLの起動は$ sudo systemctl start mysqld
コマンドを一つだけ覚えておくことで事足りそうである。
余談
- 先の情報からMacのローカルのMySQLの起動は
$ mysql.server start
でよくて、AWS EC2 AmazonLinux2インスタンス内のMySQLの起動が$ mysql.server start
でダメな理由は「AmazonLinux2インスタンスのシステムサービスの起動がSystem V スタイルの実行ディレクトリを使用していないため」である。 - 下記に先の結論に至ったリンクを記載する。