Все приведенные здесь настройки верны, но вот наиболее оптимальное и достаточное решение:
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
character-set-server = utf8
collation-server = utf8_unicode_ci
[client]
default-character-set = utf8
Добавьте их в /etc/mysql/my.cnf
.
Обратите внимание: я выбираю utf8_unicode_ci тип сопоставления из-за проблемы с производительностью.
Результат:
mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
mysql> SHOW VARIABLES LIKE 'collation%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_unicode_ci |
| collation_database | utf8_unicode_ci |
| collation_server | utf8_unicode_ci |
+----------------------+-----------------+
И это когда вы подключаетесь как пользователь, не являющийся SUPER!
Для Например, разница между подключением как SUPER и не SUPER пользователем (конечно, в случае установки utf8_unicode_ci):
пользователь с SUPER priv .:
mysql> SHOW VARIABLES LIKE 'collation%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci | <---
| collation_database | utf8_unicode_ci |
| collation_server | utf8_unicode_ci |
+----------------------+-----------------+
пользователь с не- SUPER priv.:
mysql> SHOW VARIABLES LIKE 'collation%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_unicode_ci |
| collation_database | utf8_unicode_ci |
| collation_server | utf8_unicode_ci |
+----------------------+-----------------+
Я написал всеобъемлющую статью (rus), в которой подробно объясняется, почему вы должны использовать тот или иной вариант. Все типы наборов символов и их сортировки рассматриваются: для сервера, для базы данных, для соединения, для таблицы и даже для столбца.
Надеюсь, что это и статья помогут прояснить неясные моменты.