Опубликовано пользователем goodigy
По умолчанию, после установки mysql в Ubuntu используется кодировка latin-1.
Сейчас везде используется универсальная UTF8.
Чтобы не было проблем в кракозябрами и нечитаемыми символами, нужно чтобы кодировка в базе данных mysql и в настройках какой-либо cms совпадала.
Изменение кодировки сервера mysql на UTF8 в Ubuntu.
Актуально для mysql 5.5, проверил на Ubuntu 16.04 и Ubuntu 14.04.
До версии 5.5 использовались другие названия переменных.
Итак приступим, чтобы посмотреть какая кодировка установлена сейчас у сервера mysql. Нужно залогиниться в mysql.
mysql -u root -ppassword
и вывести переменные, вот так
show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
Далее идем в папку /etc/mysql/
В некоторых мануалах советуют добавлять переменные в файл my.cnf. Но так делать нельзя, так как при обновлении этот файл может быть затерт.
В файле my.cnf, в самом низу есть такая строчка !includedir /etc/mysql/conf.d/ .
Это означает, что подключаться все файлы с расширением .cnf, лежащие в папке conf.d. Поэтому нам нужно создать файл в этой папке.
sudo nano /etc/mysql/conf.d/utf8_set.cnf
и в этот файл добавим нужные нам переменные
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
перезапустим mysql
sudo service mysql restart
Теперь еще раз проверяем переменные
mysql -u root -ppassword -e "show variables like 'char%'"
вывод должен быть таким
+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+
На этом все. Задача выполнена.