LoginSignup
5
4

MySQL $ mysql.server startコマンドと$ systemctl start mysqldコマンドの違いを調べてみた

Last updated at Posted at 2020-06-08

目的

  • 記事名に記載した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 スタイルの実行ディレクトリを使用していないため」である。
  • 下記に先の結論に至ったリンクを記載する。
5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4