MySQLのインストール【macOS】

DBのMySQL(フリーのCommunity版)をダウンロードからインストールする方法や、インストール後の簡単なMySQLの設定・コマンド操作方法についても説明しています。

このページの目的と動作環境

最終更新日:2023/1/23

本記事では、データベースのMySQLをインストール方法やインストール後の簡単なコマンド操作について説明しています。インストールMySQLはMySQL Community Server 8.0.31です。(バージョン8.0.31は2023/1/9時点の最新安定板だと思う。)

MySQLはいくつかのEditionがありますが、今回インストールするCommunity EditionはGPLライセンスに従って無料(フリー)で使えるMySQLです。

MySQL Community Editionは、世界で最も多く使用されているオープンソース・データベースの、無償で自由にダウンロードして利用することができるバージョンです。GPLライセンスに従って利用することができ、
(引用元:MySQL Community Edition

◾️動作環境とバージョン情報です
OS:macOS Big Sur(バージョン11.7.2)
インストールするMySQL:MySQL Community Server 8.0.31

macOSではHomebrew(brewコマンド)でMySQLをインストールする事もできますが、ここではMySQL公式サイトからダウンロードしてインストールする方法を説明しています。

MySQL Community版をダウンロード〜インストールする

まず、MySQLの公式サイトからMySQL Community版のインストーラをダウンロードします。

MySQL Community DownloadsページでMySQL Community Serverを選択して、MySQL Community Serverのダウンロードページに行きます。

MySQL Community Serverのダウンロードページで、自分のパソコンのOSを選択してMySQL Community版のインストーラをダウンロードします。私は「macOS 12 (x86, 64-bit), DMG Archive(mysql-8.0.31-macos12-x86_64.dmg)」をダウンロードしました。(バージョン8.0.31は2023/1/9時点の最新安定板だと思う。)
MySQL Community版のダウンロードページ

ダウンロードできる.dmgファイルはARMとx86の2種類ありますが、これはmacPCのCPUアーキテクチャの違いです(x86はIntel系CPU、ARMはM1,M2などのCPU)。なので各々のmacPC環境によって選択してください。私のmacはIntelのCPUプロセッサなので「mysql-8.0.31-macos12-x86_64.dmg」をダウンロードしました。macOSのCPUがIntelかARMかの確認は、unameコマンドでできます。

$ uname -m
x86_64
unameコマンド以外でも確認できますが、詳細については別ページを参考にしてください。
MacPCのCPUが、IntelとAppleシリコン(Silicon)のどちらなのかを確認するには?

また、"macOS 12"となっていますが、Packages for Monterey (12) are compatible with Ventura (13) and Big Sur (11)と書いてあるので、使っているmacOSのバージョンが11系でも問題なくインストールできました。

ダウンロードしたmysql-8.0.31-macos12-x86_64.dmgファイルを開くと、MySQLのパッケージファイル(pkgファイル)があります。
MySQLのpkgファイルを開く

pkgファイルを開いてMySQLのインストーラを起動します。けどダブルクリックで開こうとしても、「"mysql-8.0.31-macos12-x86_64.pkg"は、開発元が未確認のため開けません。」という警告メッセージが出て開けない場合があります。
MySQLのpkgファイルが開けない

pkgファイル開けない場合、pkgファイルを右クリック->開くを選択すると、「"mysql-8.0.31-macos12-x86_64.pkg"の開発元を検証できません。開いてもよろしいですか?」というメッセージが出るので、開くボタンを押せばMySQLのインストーラを起動する事ができます。

MySQLのインストーラが起動しました。
MySQLのインストーラを起動

MySQLのインストーラでは、次にように進めてMySQLをインストールしました(自分の場合)。
・はじめに:続けるボタン。
・使用許諾契約(License):続けるボタン。確認メッセージが出るので問題なければ同意するボタン。
・インストールの種類:デフォルト設定でインストール。(カスタマイズやインストール先の変更をしたい場合はここでする。)
・インストール:macOSのパスワード入力を求められるので入力するとインストールが始まる。
・Configuration:パスワードの暗号化の設定で”Use Strong Password Encryption”にチェックを入れた状態でNextボタンを選択する。
->MySQLのrootユーザのパスワード設定の入力を求められるので自分で決めて入力してFinishボタン。macOSのパスワード入力を求められるので入力する。
・インストーラ上に「インストールが完了しました」というメッセージが出る。インストール完了したので閉じるボタンを選択する。

これでMySQLのインストール作業が終了です。

MySQL設定画面でMySQLを起動・停止したり、起動状態を確認する

MySQLの起動状態の確認や起動・停止のコントロールは、MySQL管理画面だけでなくコマンドでも操作できます。コマンド操作についてはこのすぐ後で説明しています。

MySQLのインストールができたので、MySQLサーバが起動しているかを確認したり、起動・停止をしてみます。

システム環境設定画面の下の方にMySQLが追加されているので選択します。
システム環境設定画面のMySQL

MySQLの管理画面が開きます。この画面でMySQLサーバが起動しているかどうかを確認できますし、起動・停止の操作もできます。
MySQLの管理画面(macOS)

インストール直後は起動状態でした。また「Start MySQL when your computer starts up」というチェックボックスがあります。これはパソコン起動時にMySQLを起動するかどうかの設定です。私は常にMySQLサーバを起動していたい訳ではないのでチェックを外しました。

あと、UninstallボタンもあるからここからMySQLのアンインストールもできそうです(試してないけど)。

MySQLのコマンドディレクトリ(/usr/local/mysql/bin)にパスを通して、コマンド操作でMySQLを起動・停止したり、起動状態を確認したり、MySQLサーバに接続する。

インストールしたMySQLは管理画面だけでなく、ターミナル上のコマンド操作でMySQLサーバが起動しているかを確認したり、起動・終了操作をできます。

まず、インストールしたMySQLは/usr/local/mysqlディレクトリにあります(実体はたぶん/usr/local/mysql-8.0.31-macos12-x86_64ディレクトリ)。

そして、mysqlのコマンド類は/usr/local/mysql/binディレクトリにあります。このディレクトリにmysqlやmysqladminなどのmysql関連のコマンドが色々と入っています。

ただmysqlコマンドを使う時に毎回フルパスで"/usr/local/mysql/bin/mysql"とか入力するのは面倒なので、まずは/usr/local/mysql/binディレクトリにパスを通します。そうすればmysql、mysqladminだけでコマンドを使えるようになります。

ちなみに現状の環境変数の$PATHは、これで確認できます。

$ echo $PATH

環境変数$PATHに/usr/local/mysql/binディレクトリを追加するには、~/.bash_profileファイルに下の1行を追記します。(~/.bash_profileファイルが無いなら新規作成する)

export PATH=$PATH:/usr/local/mysql/bin

~/.bash_profileファイルに追記したら、sourceコマンドを実行して~/.bash_profileの内容を反映させます。(ターミナルを開き直しても反映される。)

$ source ~/.bash_profile

これで環境変数$PATHに/usr/local/mysql/binディレクトリが追加されたはずです。
"echo $PATH"でパスを確認したり、which mysqlでmysqlのコマンドパスを確認できます。

$ which mysql
/usr/local/mysql/bin/mysql

せっかくなのでmysqlコマンドを少し試します。MySQLのバージョン確認です。

$ mysql -V
mysql  Ver 8.0.31 for macos12 on x86_64 (MySQL Community Server - GPL)
mysqlコマンドでMySQLサーバに接続します。(MySQLサーバは起動状態で試す。rootユーザで接続する。rootユーザのパスワードはMySQLインストール時に設定したものです。)
$ mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.31 MySQL Community Server - GPL

Copyright (c) 2000, 2022, 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.

mysql:root@[(none)]>
ログインできました!
MySQLのプロンプト上で色々とコマンドを試したけど問題なさそうです。(show databasesコマンドはDB一覧の表示、statusコマンドは現在のユーザ、文字コードなどの状態を確認できます。また、MySQLプロンプトからログアウトするにはexitです。)
mysql:root@[(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.03 sec)

mysql:root@[(none)]> status
--------------
mysql  Ver 8.0.31 for macos12 on x86_64 (MySQL Community Server - GPL)

Connection id:		9
Current database:	
Current user:		root@localhost
SSL:			Not in use
Current pager:		stdout
Using outfile:		''
Using delimiter:	;
Server version:		8.0.31 MySQL Community Server - GPL
Protocol version:	10
Connection:		Localhost via UNIX socket
Server characterset:	utf8mb4
Db     characterset:	utf8mb4
Client characterset:	utf8mb4
Conn.  characterset:	utf8mb4
〜

mysql:root@[(none)]> exit
Bye

次に、コマンドでMySQLサーバの起動状態を確認したり、起動・停止の操作をします。

MySQLサーバが起動しているかの確認は、mysqladmin pingコマンドでできます(MySQLのrootユーザでパスワード入力が必要)。
■起動している時

$ mysqladmin ping -uroot -p
Enter password: 
mysqld is alive
■停止している時
$ mysqladmin ping -uroot -p
Enter password: 
mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)'
Check that mysqld is running and that the socket: '/tmp/mysql.sock' exists!

MySQLサーバを停止するには、mysqladmin shutdownコマンドでできます。

$ mysqladmin shutdown -uroot -p

MySQLサーバを起動するには、mysqld_safeコマンドでできます。(sudoを付ける必要がある。だからOS管理者パスワードを求められる。)

$ sudo mysqld_safe
Password:
2023-01-08T08:38:51.6NZ mysqld_safe Logging to '/usr/local/mysql/data/hogeuser-MacBook-Pro.local.err'.
2023-01-08T08:38:51.6NZ mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
〜
MySQLサーバを起動できたけど、コマンドのプロンプトが返ってこないし、ショートカット「Cntrol + C」でMySQLサーバを強制終了しようとしたけどできません。なので、もう1つターミナルを起動して、mysqladmin shutdownコマンドでMySQLサーバを終了すればプロンプトが返ってきました。
だから、MySQLサーバをmysqld_safeコマンドで起動する時は、&を付けてバックグラウンド起動した方が良さそうです。
$ sudo mysqld_safe &

ちなみにmysqladminコマンドはサーバの停止や状態確認だけでなく、他にもMySQLを管理をするために色々な事ができますし、mysqld_safeコマンドも色々なオプションでMySQLサーバを起動する事ができます。各コマンドの詳細は、マニュアルを参照してください。
4.5.2 mysqladmin — A MySQL Server 管理プログラム - MySQL 8.0 リファレンスマニュアル
4.3.2 mysqld_safe — MySQL サーバー起動スクリプト - MySQL 8.0 リファレンスマニュアル

アマゾンでデータベース関連の本を探す [広告]

また、/usr/local/mysql/support-files/mysql.serverコマンド(MySQLサーバー起動スクリプト)でも、MySQLサーバの起動状態の確認、起動、停止、再起動などができます。

まず、フルパスの/usr/local/mysql/support-files/mysql.serverは長くて入力が面倒なので、aliasで短縮コマンドmysql.serverで実行できるように設定します。

~/.bash_profileファイルに下の1行を追記します(sudoを付けています。mysql.serverコマンドは管理者権限で実行する必要があるので。)

alias mysql.server='sudo /usr/local/mysql/support-files/mysql.server'
~/.bash_profileファイルに追記したら、sourceコマンドを実行して~/.bash_profileの内容を反映させます。(ターミナルを開き直しても反映される。)
$ source ~/.bash_profile
これでmysql.serverコマンドで使えるようになります。

まずはMySQLサーバの起動状態を確認します。
■MySQLサーバが起動中の場合

$ mysql.server status
 SUCCESS! MySQL running (23031)
■MySQLサーバが終了している場合
$ mysql.server status
 ERROR! MySQL is not running
次に、MySQLサーバを起動します。
$ mysql.server start
Starting MySQL
.. SUCCESS! 
MySQLサーバを停止します。
$ mysql.server stop
Shutting down MySQL
. SUCCESS! 
MySQLサーバを再起動します。
$ mysql.server restart
Shutting down MySQL
. SUCCESS! 
Starting MySQL
. SUCCESS! 
MySQLサーバをリロードします。
$ mysql.server reload
 SUCCESS! Reloading service MySQL

個人的にはMySQLの起動操作や状態を確認をするだけなら、mysqladminやmysqld_safeコマンドを使うよりも、mysql.serverコマンドで操作する方がシンプルで良いと思います。mysql.serverスクリプトの詳細については、マニュアルを参考にしてください。
4.3.3 mysql.server — MySQL サーバー起動スクリプト - MySQL 8.0 リファレンスマニュアル

Amazonでコマンド操作関連の入門書を探す。コマンド操作に強くなる![広告]

別のホスト(マシン)からMySQLサーバへリモート接続できるMySQLユーザの作成

MySQLをインストールし終わって、MySQLのDBを作成して何か利用したい場合、rootユーザのままでDB操作するのはセキュリティ的に良くないので、新規ユーザを作成してそのユーザでMySQLのDBを操作するのが良いと思います。

その際に作成する新規ユーザは、別のリモートホストからMySQLサーバへリモート接続するのを許可するかどうかを考えると思います。MySQLサーバにリモートから接続可能なユーザ、またはリモート接続不可のユーザを作成するコマンドについて別ページで説明していますので、良ければそちらも参考にしてください。
MySQL(MariaDB)にmysqlコマンドでリモート接続する

MySQLインストール後のその他のメモ書き。my.cnfの場所、rootパスワードを忘れた場合など

MySQLの設定ファイルのmy.cnfは、デフォルトでは下記のパスにある場合に読み込まれるようです。

$ mysql --help
〜
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf 
〜
ちなみに私の環境ではMySQLインストール後にあるのは~/.my.cnfだけでした。

次に、MySQLインストール直後にrootパスワードを忘れるという事はほとんど無いと思いますが、もしもrootパスワード忘れてしまった場合、mysqld_safeコマンドで--skip-grant-tablesオプションを付けてMySQLサーバを起動すればパスワード入力無しでrootログインでMySQLに接続できます。 (*mysqld_safeのフルパスは/usr/local/mysql/bin/mysqld_safe)

$ sudo mysqld_safe --skip-grant-tables &
[1] 27572
2023-01-08T13:29:37.6NZ mysqld_safe Logging to '/usr/local/mysql/data/hogeuser-MacBook-Pro.local.err'.
2023-01-08T13:29:37.6NZ mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
〜
$ mysql -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
〜
mysql:root@[(none)]> 
MySQLに接続できたらMySQLプロンプト上でrootパスワードを空に設定してMySQLサーバを停止して、今度は通常モードでMySQLサーバを起動してMySQLサーバに接続してMySQLプロンプト上でrootパスワードを再設定する事ができます。
コマンドなどの詳細な方法はこちらのサイトが参考になります。
Mac ローカル環境の MySQL 8.x のrootパスワードを忘れた時のリセット方法

Kindle Unlimitedなら対象の本が定額で読み放題 [広告]
対象本には、プログラミングなどのIT関連本、マンガ、雑誌、ビジネス書などがたくさんあります!