utf8 для mysql в Ubuntu 16.04 и Ubuntu 14.04

По умолчанию, после установки 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>

Добавить комментарий

Ваш e-mail не будет опубликован.