brew でインストールしたMySQLのmy.cnfの場所と配置場所

Mac

前提

  • OS:MacBook Air (Apple M2)
  • MySQLは8.4(LTS)を使用
  • Homebrew環境は構築済

結論

brew install mysql@8.4

install実行後に、/opt/homebrew/以下を検索。

find /opt/homebrew/* -name "my.cnf"

% find /opt/homebrew/* -name "my.cnf"
/opt/homebrew/Cellar/mysql@8.4/8.4.4/.bottle/etc/my.cnf
/opt/homebrew/etc/my.cnf

(※)8.4/8.4.4はバージョンなので環境により違う可能性があります。

MySQLがサポートしているmy.cnf置き場を確認する。

mysql --help | grep cnf

% mysql --help | grep cnf
                      order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /opt/homebrew/Cellar/mysql-client@8.4/8.4.4/etc/my.cnf ~/.my.cnf

インストールしたMySQLが参照する、my.cnfの場所は下記の通り。

1 /etc/my.cnf
2 /etc/mysql/my.cnf
3 /opt/homebrew/Cellar/mysql-client@8.4/8.4.4/etc/my.cnf
4 ~/.my.cnf

Linuxサーバーでもよく使用されている/etc/my.cnfにコピーする。Macでetc以下を変更する場合、sudoが必要。

% sudo cp /opt/homebrew/Cellar/mysql@8.4/8.4.4/.bottle/etc/my.cnf /etc/my.cnf
Password:(パスワードを入力)

これで/etc/my.cnfで設定の変更が可能になります。

my.cnfで設定変更が効くかの確認

今の最大接続数(max_connections)を確認。

mysql> show variables LIKE  'max_connections%'  \G
*************************** 1. row ***************************
Variable_name: max_connections
        Value: 151
1 row in set (0.01 sec)

/etc/my.cnfmax_connections = 50を追加する。(こちらもsudoが必要)

 % sudo vi /etc/my.cnf
Password:

末尾に追記
max_connections = 50

MySQLを再起動して、再度確認。

mysql> show variables LIKE  'max_connections%'  \G
*************************** 1. row ***************************
Variable_name: max_connections
        Value: 50
1 row in set (0.01 sec)

補足

MySQL8.4 LTSについて

brew install mysql@8.4

(※)MySQL8.4はLTS(Long Term Support・長期間サポート)バージョンです。8.4の次のLTSは9.7の予定です。2025年3月現在、brew install mysqlでインストールすると、MySQL 9.2がインストールされますが、サポート期間は2025年4月までです。MySQLの最新版で追加された機能をどうしても使いたい、仕事で最新版を常に追いかけているなどなければ、LTS版を選択するのが無難です。

その他(コマンド一覧)

インストール(その時の最新バージョン)

brew install mysql

インストール(バージョン指定 8.4)

brew install mysql@8.4

mysql-client8.4のインストール

brew install mysql-client@8.4

起動(8.4指定でインストールした場合)

brew services start mysql@8.4

停止(8.4指定でインストールした場合)

brew services stop mysql@8.4

リロード(8.4指定でインストールした場合)

brew services reload mysql@8.4

(※)私の環境だけかもしれませんが、reloadを使うと正しく起動しない場合がある。再起動の時はstop->startと明示的に実行したほうが良いかも。

バージョン確認

mysql --version

validate_passwordについて

MySQLは、Linuxには何度もYumで入れており、ローカルやクローズドの開発環境の場合にはvalidate_passwordのpolicyをLOW、lengthは4への変更をよくしている。

今回Macに直接インストールしたのは何年ぶり。いつもの癖で、インストール直後にvalidate_passwordを確認しようとしたらEmptyで返って来たので気になって調べてみた。

mysql> show variables like 'validate_password%';
Empty set (0.00 sec)
https://dev.mysql.com/doc/refman/8.0/ja/validate-password-installation.html

「MySQL Yum リポジトリ」、「MySQL SLES リポジトリ」または RPM packages provided by Oracle を使用して MySQL 8.0 をインストールする場合、MySQL Server を初めて起動した後、validate_password コンポーネントはデフォルトで有効になります。

いつもLinuxOSにYum(DNF)で入れてたからデフォルト有効になってたのか。知らなかった。

コメント

タイトルとURLをコピーしました