MySQLのインストール【macOS】

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

※ 本ページはプロモーションが含まれています。

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

最終更新日:2023/9/30

本記事では、mac環境にデータベースのMySQLをダウンロード・インストール方法や、インストール後のMySQLの簡単なコマンド操作や設定方法について説明しています。

インストールするMySQLはMySQL Community Server 8.0.31です。(バージョン8.0.31は2023/1/9時点の最新安定板だと思う。)

[2023/9/30追記] MySQLのバージョンは8.0系だけでなく、8.1系もリリースされました。ただ、バージョン8.1.0はInnovationリリースです。 MySQLのバージョンの8.1.0についてや、Innovationリリースとは?LTSとは?については、Oracle MySQL Japan Blogが参考になると思います。
MySQLの Innovation と Long-Term Support (LTS) バージョンのご紹介
おかげさまでMySQL 8.1.0がリリースされました

また、MySQLはいくつかのEditionがありますが、今回インストールするMySQL 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

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

ec2(Amazon Linux2,Amazon Linux2023)やLinux CentOS7環境にMySQLをインストールする方法については別ページで説明しています。
MySQL8のインストール方法(ec2,CentOS7)

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

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

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

MySQL Community Serverのダウンロードページで、自分のパソコンのOSを選択してMySQL Community版のインストーラをダウンロードします。
私のPCはMac(CPUはIntel系)なので、「macOS 12 (x86, 64-bit), DMG Archive(mysql-8.0.31-macos12-x86_64.dmg)」をダウンロードしました。(バージョン8.0.31は2023/1/9時点の最新安定板だと思う。2023/9/30に見たら8.0系だけでなく、8.1系もリリースされています。ただ、バージョン8.1.0はInnovationリリースです。)
MySQL Community版のダウンロードページ

macOS環境でダウンロードできる.dmgファイルはARMとx86の2種類ありますが、これはmacPCのCPUアーキテクチャの違いです(x86はインテル(Intel)系CPU、ARMはApple M1,M2などのCPU)。なので各自のmacOS環境によって選択してください。
私の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ファイル)があります。
mac環境のMySQLのpkgファイルを開く

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

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

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

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

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

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

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

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

macの場合、システム環境設定画面の下の方にMySQLが追加されているので選択します。
macOS環境でシステム環境設定画面の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サーバが起動しているかを確認したり、起動・終了操作をできます。

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

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

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

ちなみにmac環境の場合、現状の環境変数は$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のコマンドパスを確認できます。

$ echo $PATH | sed -e "s/:/\n/g"
〜
/usr/local/mysql/bin
$ which mysql
/usr/local/mysql/bin/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 リファレンスマニュアル

(広告)アマゾンでSQL・DB(データベース)関連の本(Kindle)を探す!

また、/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

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

MySQLのカラム値のひらがなカタカナや英数字の半角全角を区別できるようにする

OS環境やMySQLのバージョンによって違うと思いますが、私がインストールしたMySQLは使い始めたら、char型・varchar型のカラム値の平仮名カタカナや数字・英字の半角全角の区別がされない事に気づきました。そして、その原因がCOLLATE(照合順序)の設定値で、COLLATEを指定する事により区別できるようになります。

この区別するしない問題の詳細は別ページで説明しているので、良ければ参考にしてください。
MySQLのひらがなカタカナ、英数字の全角半角を区別する。COLLATEE(照合順序)設定

(広告)Amazonでコマンド操作関連のKindleや書籍を探す。コマンド操作に強くなる!

別のホスト(マシン)から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 
〜
ちなみに私のmac環境ではMySQLインストール後にあるのは~/.my.cnfだけでした。(もしかしたら~/.my.cnfファイルは今回のMySQLインストール時に生成されたのではなく、過去に古いバージョンのMySQLをインストールしてその後の設定で自分が作成したものかも。ちょっと覚えてない。。)

次に、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パスワードを忘れた時のリセット方法