Debian 9 (stretch) で MySQL 8.0 の設定ファイルを /etc/my.cnf にする

Debian 9 へ MySQL APT Repository から MySQL 8.0 をインストールすると、my.cnf は alternatives で管理されて、サーバ設定とクライアント設定が複数のファイルで管理される。
複数のファイルで管理すると「この設定、どのファイルから読まれてるの?」問題が結構あるので、Debian 系のお作法からは外れるかもしれないけど /etc/my.cnf にすることにした。

デフォルトの設定ファイル

alternatives で管理されていて、/etc/mysql/mysql.cnf へのシンボリックリンクになっている。

$ ls -al /etc/mysql/my.cnf
lrwxrwxrwx 1 root root 24  5月  6 17:54 /etc/mysql/my.cnf -> /etc/alternatives/my.cnf
$ ls -al /etc/alternatives/my.cnf 
lrwxrwxrwx 1 root root 20  5月  6 17:54 /etc/alternatives/my.cnf -> /etc/mysql/mysql.cnf

/etc/mysql/mysql.cnf は /etc/mysql/mysql.conf.d/mysqld.cnf(サーバ設定) と /etc/mysql/conf.d/mysql.cnf(クライアント設定) を include するようになっている。

$ grep 'include' /etc/mysql/mysql.cnf
.....
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

起動時に読み込む設定ファイルを /etc/my.cnf に設定

1) /etc/my.cnf を準備する*1

$ sudo cp -a /etc/mysql/mysql.conf.d/mysqld.cnf /etc/my.cnf

2) alternatives 設定を変更する

$ sudo update-alternatives --remove-all my.cnf
$ sudo update-alternatives --install /etc/mysql/my.cnf my.cnf /etc/my.cnf 200

3) mysqld を再起動する

$ sudo systemctl restart mysql.service

*1:とりあえず、/etc/mysql/mysql.conf.d/mysqld.cnf をコピー