まとめ MySQLの新規接続時のcharset/collation指定は無視されることがあり、エラーや警告にならないので気づきにくいです。 接続直後に SET NAMES utf8mb4 (collationも指定したい場合は SET NAMES utf8mb4 COLLATE utf8mb4_bin など) を実行すると安全です。 接続のcollationとデータベースのcollationの不整合 まずは実例を見てみましょう。Ubuntu上で、DockerでMySQL 8.0を動かしつつ、MariaDBのクライアントから接続してみます。 準備(MySQLを立ち上げてmariadb-clientで接続するまで) # Docker で MySQL を動かす $ docker pull mysql:latest $ docker run -d -e MYSQL_ALLOW_EMPTY_PASS