mysqlbinlog:未知变量 'default-character-set=utf8mb4'

mysqlbinlog: unknown variable 'default-character-set=utf8mb4'

启动 mysqlbinlog 时 returns 一个错误:

root@utils # mysqlbinlog --start-datetime="2021-12-05 13:13:00"
mysqlbinlog: unknown variable 'default-character-set=utf8mb4'

如何解决?

可能与/etc/mysql/mariadb.conf.d/50-client.cnf的内容有关,即:

[client]
# Default is Latin1, if you need UTF-8 set this (also in server section)
default-character-set = utf8mb4

# socket location
socket = /var/run/mysqld/mysqld.sock

# Example of client certificate usage
# ssl-cert=/etc/mysql/client-cert.pem
# ssl-key=/etc/mysql/client-key.pem
#
# Allow only TLS encrypted connections
# ssl-verify-server-cert=on

# This group is *never* read by mysql client library, though this
# /etc/mysql/mariadb.cnf.d/client.cnf file is not read by Oracle MySQL
# client anyway.
# If you use the same .cnf file for MySQL and MariaDB,
# use it for MariaDB-only client options
[client-mariadb]

服务器配置为:

Server version: 10.3.31-MariaDB-0ubuntu0.20.04.1-log Ubuntu 20.04

Move the default-character-set=utf8 line below the [mysql] or [mysqld] sections of your my.cnf file. mysqlbinlog reads variables under [client], but not [mysql]. Your command-line client and/or browser reads the [client] AND [mysql] sections of the config file.

BTW, mysqlbinlog can take a specified character set, if you use the --set-charset=charset_name (>5.0.23) option.

来源:https://forums.mysql.com/read.php?103,189835,192421#msg-192421

字符集服务器 = utf8mb4

mysqlbinlog --no-defaults mysql-bin.000001

另一种解决方案是在失败选项中添加 loose_ 前缀:

[client]
loose-default-character-set=utf8mb4

松散前缀强制命令行工具在不支持该选项时不抛出错误。