FreeBSD 14.2-RELEASEに上げたらいろいろ変わっていた
- 公開日: 2024/12/30(月) 08:03[JST]
- 更新日: 2024/12/30(月) 17:40[JST]
職場のサーバをFreeBSD 14.2-RELEASEにアップグレードして、ついでにMySQLも8.0から8.4にしたのだけどいろいろ変わっていたので忘備録。
シリアルコンソールのデフォルト速度が速くなっていた
実は以前自宅サーバを14.0にしようとしたところ、シリアルコンソールとして使っているDOS Kermitで文字化けが起こるようになり、13に戻したことがある。その時は原因がfreebsd-updateによるものなのか、14のせいなのかが分からなかったが、後にクリーンインストールで14.2をインストールし、やはり文字化けが起こることを確認した。ただ、インストールをして /etc/ttys を設定した段階では文字化けは起こらず、 /boot/loader.conf に console="comconsole" を追加して再起動すると、ブート画面で文字化けが発生し、その後は文字化けが続く、という状態だった。
でもって、ハンドブックを読むとブート時のシリアルコンソールの速度を指定するパラメータを指定する箇所があることを発見し、もしやと思い設定してみたところ文字化けが解消された。つまり、 /boot/loader.conf に comconsole_speed="9600" を指定すればよい。どうやらcomconsoleが指定されている場合、この速度が /etc/ttys の指定を上書きしてしまうようだ。
SSHDのデフォルトの認証方式が厳しくなっていた
昔からSSHクライアントとしてはTera Termを好んで使っているんだけど、14.2に上げたら接続できなくなってしまった。調べてみると、デフォルトでRSA署名に対応しなくなったとのことで、古いバージョンのSSHクライアントから接続できなくなっていたようだ。現行のTera Term 5.3なら大丈夫(鍵ペアを作り直す必要はない)。古いクライアントから接続しなければならないのであれば、 /etc/ssh/sshd_config に PubkeyAcceptedAlgorithms=+ssh-rsa を追加すればよい。
MySQL8.4はパスワードの扱いに注意
MySQL8.4では従来のパスワード認証プラグインである mysql_native_password がデフォルトで無効となっている。8.0から始めたのであれば CREATE USER のデフォルトプラグインは新しい cashing_sha2_password になっているはずなので特に問題はないかと思うが、MySQL5系からアップグレードした場合は mysql_native_password のユーザが残っている可能性がある。それに気づかずに8.4にアップグレードしてしまうと、データベースにアクセスできずに頭を抱えてしまうことになる。
そんな場合は、 my.cnf の [mysqld] セクションに mysql_native_password=on を追記してMySQLサーバを再起動してあげればよい(参考: https://dev.mysql.com/doc/refman/8.4/en/native-pluggable-authentication.html )。でも、このプラグインはいずれなくなるので、これを機に各ユーザの認証方式を cashing_sha2_password にしておくのが良いだろう。管理者でMySQLにアクセスし、 まず SELECT user, host, plugin from mysql.user; で各ユーザのプラグインを確認する。そして、ALTER USER `ユーザ名`@`IPアドレス` IDENTIFIED WITH cashing_sha2_password BY 'パスワード'; を mysql_native_password となっているすべてのユーザに対して実行すればよい。終わったら my.cnf も戻しておくのを忘れずに。
8.4へのアップグレード自体は、pkgで8.4をインストールすれば初回起動時にデータのコンバートは行ってくれる。安全に行くなら以下の手順がよいだろう。
MySQL8.0で mysql_native_password のユーザを cashing_sha2_password に更新し、動作確認
MySQLのデータフォルダ(デフォルトなら /var/db/mysql )と my.cnf をバックアップ
MySQLを8.4にアップグレードし、動作確認
FreeBSDを14.2にアップグレードし、MySQL含むパッケージも再インストール
MySQL Workbenchは8.4をサポートしない
WindowsやMacでデータベースのテーブルをちょこちょこ編集する際に使っていたMySQL Workbenchだが、8.4は「動くだろうけどサポート外」ということ。ということで、代替のGUIクライアントを探すことに。"Mysql workbench alternative"とかで検索してみたところ、HeidiSQLの評判が良さそうなのでこれを入れてみた。