MySQL Server has a server character set and a server collation.
By default, these are utf8mb4 and
utf8mb4_0900_ai_ci, but they can be set
explicitly at server startup on the command line or in an option
file and changed at runtime.
Initially, the server character set and collation depend on the
options that you use when you start mysqld.
You can use
--character-set-server for the
character set. Along with it, you can add
--collation-server for the
collation. If you don't specify a character set, that is the
same as saying
--character-set-server=utf8mb4.
If you specify only a character set (for example,
utf8mb4) but not a collation, that is the
same as saying
--character-set-server=utf8mb4
--collation-server=utf8mb4_0900_ai_ci
because utf8mb4_0900_ai_ci is the default
collation for utf8mb4. Therefore, the
following three commands all have the same effect:
mysqld
mysqld --character-set-server=utf8mb4
mysqld --character-set-server=utf8mb4 \
--collation-server=utf8mb4_0900_ai_ci
Character set and collation startup options require explicit
names. --character-set-server
accepts exactly one value; multiple values are rejected. The
value utf8 is rejected for this option, and
utf8_* collation names are rejected for
--collation-server. Use explicit
utf8mb3, utf8mb4,
utf8mb3_*, or utf8mb4_*
names. These restrictions also apply to settings read from
option files.
One way to change the settings is by recompiling. To change the
default server character set and collation when building from
sources, use the DEFAULT_CHARSET
and DEFAULT_COLLATION options for
CMake. For example:
cmake . -DDEFAULT_CHARSET=latin1Or:
cmake . -DDEFAULT_CHARSET=latin1 \
-DDEFAULT_COLLATION=latin1_german1_ciBoth mysqld and CMake verify that the character set/collation combination is valid. If not, each program displays an error message and terminates.
The server character set and collation are used as default
values if the database character set and collation are not
specified in CREATE DATABASE
statements. They have no other purpose.
The current server character set and collation can be determined
from the values of the
character_set_server and
collation_server system
variables. These variables can be changed at runtime.