mac環境で、DBのMySQL8(フリーのCommunity版)をダウンロードからインストールする方法や、インストール後のMySQLの簡単な設定・コマンド操作方法についても説明しています。
※ 本ページはプロモーションが含まれています。
本記事では、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の公式サイトから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リリースです。)
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コマンド以外でも確認できますが、別ページで詳細を説明しているので良ければ参考にしてください。また、"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ファイル)があります。
pkgファイルを開いてMySQLのインストーラを起動します。けどダブルクリックで開こうとしても、「"mysql-8.0.31-macos12-x86_64.pkg"は、開発元が未確認のため開けません。」という警告メッセージが出て開けない場合があります。
pkgファイル開けない場合、pkgファイルを右クリック->開くを選択すると、「"mysql-8.0.31-macos12-x86_64.pkg"の開発元を検証できません。開いてもよろしいですか?」というアラートメッセージが出るので、開くボタンを押せばMySQLのインストーラを起動する事ができます。
MySQL Community editionのインストーラーが起動しました。
MySQLのインストーラでは、次にように進めてMySQLをインストールしました(自分の環境の場合)。
・はじめに:続けるボタン。
・使用許諾契約(License):続けるボタン。確認メッセージが出るので問題なければ同意するボタン。
・インストールの種類:デフォルト設定でインストール。(カスタマイズやインストール先の変更をしたい場合はここでする。)
・インストール:macOSのパスワード入力を求められるので入力するとインストールが始まる。
・Configuration:パスワードの暗号化の設定で”Use Strong Password Encryption”にチェックを入れた状態でNextボタンを選択する。
->MySQLのrootユーザのパスワード設定の入力を求められるので自分で決めて入力してFinishボタン。macOSのパスワード入力を求められるので入力する。
・インストーラ上に「インストールが完了しました」というメッセージが出る。インストール完了したので閉じるボタンを選択する。
これでMySQLのインストール作業が終了です。
MySQLの起動状態の確認や起動・停止のコントロールは、MySQL管理画面だけでなくコマンドでも操作できます。コマンド操作についてはこのすぐ後で説明しています。
MySQLのインストールができたので、MySQLサーバが起動しているかを確認したり、起動・停止をしてみます。
macの場合、システム環境設定画面の下の方にMySQLが追加されているので選択します。
MySQLの管理画面が開きます。この画面でMySQLサーバが起動しているかどうかを確認できますし、起動・停止の操作もできます。
インストール直後は起動状態でした。また「Start MySQL when your computer starts up」というチェックボックスがあります。これはパソコン起動時にMySQLを起動するかどうかの設定です。私は常にMySQLサーバを起動していたい訳ではないのでチェックを外しました。
あと、Uninstallボタンもあるからここから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: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サーバを終了すればプロンプトが返ってきました。$ 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
mac環境でのMySQLのコマンド操作がかなり簡単になりました!
個人的にはMySQLの起動操作や状態を確認をするだけなら、mysqladminやmysqld_safeコマンドを使うよりも、mysql.serverコマンドで操作する方がシンプルで良いと思います。mysql.serverスクリプトの詳細については、マニュアルを参考にしてください。
4.3.3 mysql.server — MySQL サーバー起動スクリプト - MySQL 8.0 リファレンスマニュアル
OS環境やMySQLのバージョンによって違うと思いますが、私がインストールしたMySQLは使い始めたら、char型・varchar型のカラム値の平仮名カタカナや数字・英字の半角全角の区別がされない事に気づきました。そして、その原因がCOLLATE(照合順序)の設定値で、COLLATEを指定する事により区別できるようになります。
この区別するしない問題の詳細は別ページで説明しているので、良ければ参考にしてください。
MySQLのひらがなカタカナ、英数字の全角半角を区別する。COLLATEE(照合順序)設定
MySQLをインストールして、MySQLのDBを作成して使う場合、rootユーザのままでDB操作するのはセキュリティ的に良くないので、新規ユーザを作成してそのユーザでMySQLのDBを操作するのが良いと思います。
その際に作成する新規ユーザは、別のリモートホストからMySQLサーバへリモート接続するのを許可するかどうかを考えると思います。MySQLサーバにリモートから接続可能なユーザ、またはリモート接続不可のユーザを作成するコマンドについて別ページで説明していますので、良ければそちらも参考にしてください。
MySQL(MariaDB)にmysqlコマンドでリモート接続する
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パスワードを再設定する事ができます。