
По умолчанию, после установки mysql в Ubuntu используется кодировка latin-1.
Сейчас везде используется универсальная UTF8.
Чтобы не было проблем в кракозябрами и нечитаемыми символами, нужно чтобы кодировка в базе данных mysql и в настройках какой-либо cms совпадала.
Изменение кодировки сервера mysql на UTF8 в Ubuntu.
Актуально для mysql 5.5, проверил на Ubuntu 16.04 и Ubuntu 14.04.
До версии 5.5 использовались другие названия переменных.
Итак приступим, чтобы посмотреть какая кодировка установлена сейчас у сервера mysql. Нужно залогиниться в mysql.
<code class="language-bash hljs ">mysql -u root -ppassword</code>
и вывести переменные, вот так
<code class="language-sql hljs "><span class="hljs-operator"><span class="hljs-keyword">show</span> <span class="hljs-keyword">variables</span> <span class="hljs-keyword">like</span> <span class="hljs-string">'char%'</span>; </span></code>
<code class="language-bash hljs ">+--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_<span class="hljs-keyword">set</span>_client | utf8 | | character_<span class="hljs-keyword">set</span>_connection | utf8 | | character_<span class="hljs-keyword">set</span>_database | latin1 | | character_<span class="hljs-keyword">set</span>_filesystem | binary | | character_<span class="hljs-keyword">set</span>_results | utf8 | | character_<span class="hljs-keyword">set</span>_server | latin1 | | character_<span class="hljs-keyword">set</span>_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+</code>
<code class="language-sql hljs "><span class="hljs-operator"> </span></code>
Далее идем в папку /etc/mysql/
В некоторых мануалах советуют добавлять переменные в файл my.cnf. Но так делать нельзя, так как при обновлении этот файл может быть затерт.
В файле my.cnf, в самом низу есть такая строчка !includedir /etc/mysql/conf.d/ .
Это означает, что подключаться все файлы с расширением .cnf, лежащие в папке conf.d. Поэтому нам нужно создать файл в этой папке.
<code class="language-bash hljs "><span class="hljs-built_in">sudo</span> nano /etc/mysql/conf.d/utf8_set.cnf</code>
и в этот файл добавим нужные нам переменные
<code class="language-bash hljs ">[mysqld] character-set-server=utf8 collation-server=utf8_general_ci</code>
перезапустим mysql
<code class="language-bash hljs "><span class="hljs-built_in">sudo</span> service mysql restart</code>
Теперь еще раз проверяем переменные
<code class="language-bash hljs ">mysql -u root -ppassword <span class="hljs-operator">-e</span> <span class="hljs-string">"show variables like 'char%'"</span></code>
вывод должен быть таким
<code class=" hljs bash">+--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_<span class="hljs-keyword">set</span>_client | utf8 | | character_<span class="hljs-keyword">set</span>_connection | utf8 | | character_<span class="hljs-keyword">set</span>_database | utf8 | | character_<span class="hljs-keyword">set</span>_filesystem | binary | | character_<span class="hljs-keyword">set</span>_results | utf8 | | character_<span class="hljs-keyword">set</span>_server | utf8 | | character_<span class="hljs-keyword">set</span>_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ </code>
<code class="language-sql hljs "><span class="hljs-operator"> </span></code>