<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.p3.ru/index.php?action=history&amp;feed=atom&amp;title=Mysql</id>
	<title>Mysql - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.p3.ru/index.php?action=history&amp;feed=atom&amp;title=Mysql"/>
	<link rel="alternate" type="text/html" href="https://wiki.p3.ru/index.php?title=Mysql&amp;action=history"/>
	<updated>2026-04-15T07:25:03Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.p3.ru/index.php?title=Mysql&amp;diff=374&amp;oldid=prev</id>
		<title>TTK: /* Решение проблем с кодировками */</title>
		<link rel="alternate" type="text/html" href="https://wiki.p3.ru/index.php?title=Mysql&amp;diff=374&amp;oldid=prev"/>
		<updated>2012-08-23T10:48:46Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Решение проблем с кодировками&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Как поменять утеряный пароль root ==&lt;br /&gt;
&lt;br /&gt;
Останавливаем MySQL:&lt;br /&gt;
&lt;br /&gt;
 /usr/local/etc/rc.d/mysql-server.sh stop&lt;br /&gt;
&lt;br /&gt;
Запускаем с параметром:&lt;br /&gt;
&lt;br /&gt;
 mysqld --skip-grant-tables&lt;br /&gt;
&lt;br /&gt;
Отправляем в фон. Для этого нажимаем Ctrl-z и выполняем команду bg&lt;br /&gt;
&lt;br /&gt;
Заходим без пароля делаем команды:&lt;br /&gt;
&lt;br /&gt;
 use mysql;&lt;br /&gt;
 UPDATE user SET Password=PASSWORD(&amp;#039;mynewpassword&amp;#039;) WHERE User=&amp;#039;root&amp;#039;;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
&lt;br /&gt;
Останавлием mysql и запускаем нормально:&lt;br /&gt;
&lt;br /&gt;
 kill %1&lt;br /&gt;
 /usr/local/etc/rc.d/mysql-server.sh start&lt;br /&gt;
&lt;br /&gt;
== Решение проблем с кодировками ==&lt;br /&gt;
&lt;br /&gt;
Чтобы решить проблему - достаточно понять логику работы. MySQL, начиная с версии 4.1, знает что такое кодировки и как с ними работать. Если до 4.0 он работал с байтами, то теперь он работает с символами.&lt;br /&gt;
&lt;br /&gt;
MySQL написали шведы, поэтому кодировкой по умолчанию (сразу после установки) является latin1, а &amp;quot;сравнение&amp;quot; (последовательность букв, алфавит; влияет на сортировки) - latin1_swedish.&lt;br /&gt;
&lt;br /&gt;
Итак, где кодировки указываются:&lt;br /&gt;
&lt;br /&gt;
1. Кодировка конкретной базы/таблицы/столбца. Это кодировка, в которой MySQL будет хранить данные. Например, если у вас данные в cp1251, то будет большой ошибкой указывать для хранения кодировку latin1. В ней нет соответствий для русских символов, все они будут заменены на вопросы. Кодировка хранения можно задать, например, так:&lt;br /&gt;
&lt;br /&gt;
 create database `имя базы` default charset cp1251;&lt;br /&gt;
&lt;br /&gt;
Если кодировка не указана - будет использовано значение параметра default-character-set из файла /etc/my.cnf (либо latin1, если параметра нет).&lt;br /&gt;
&lt;br /&gt;
2. Кодировка соединения. Это кодировка, в которой клиент (скрипт пользователя, форум, mysql-клиент и т.д.) общается с MySQL. Когда клиент подсоединяется к серверу, тот ему сообщает значение параметра default-character-set. Таким образом, они договариваются о том, в какой кодировке они будут общаться. Кодировку общения можно изменить запросом (его лучше выполнять сразу после соединения с сервером):&lt;br /&gt;
&lt;br /&gt;
 set names cp1251&lt;br /&gt;
&lt;br /&gt;
Кстати, множество современных &amp;#039;&amp;#039;&amp;#039;правильных&amp;#039;&amp;#039;&amp;#039; скриптов именно это и делают.&lt;br /&gt;
&lt;br /&gt;
Одна сложность: есть ряд кривых клиентов, которые всего этого не понимают и общаются в какой-то своей кодировке. Персонально для них можно написать в /etc/my.cnf, секцию [mysqld]:&lt;br /&gt;
&lt;br /&gt;
 [mysqld]&lt;br /&gt;
 set init_connect=&amp;quot;set names utf8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Что это означает? Сразу после подсоединения &amp;#039;&amp;#039;&amp;#039;любого&amp;#039;&amp;#039;&amp;#039; клиента, MySQL выполнит запрос &amp;quot;set names utf8&amp;quot;, как будто смену кодировки общения запросил сам клиент.&lt;br /&gt;
&lt;br /&gt;
Это всё, что нужно знать для решения любой проблемы с кодировками в MySQL. Осталось несколько уточнений (самое интересное :)&lt;br /&gt;
&lt;br /&gt;
[[phpMyAdmin]], mysqldump - обычные клиенты, на них действуют те же самые правила. Одно &amp;quot;но&amp;quot;: на все PHP-скрипты (включая phpMyAdmin) действует default-character-set из секции [client] в my.cnf. Для mysqldump есть отдельная секция [mysqldump]. &lt;br /&gt;
&lt;br /&gt;
Дамп базы - это обычный набор MySQL-команд. Если вы в самое его начало напишете &amp;quot;set names cp1251;&amp;quot;, то эта команда тоже выполнится и MySQL будет считать, что дальше все данные в дампе идут в кодировке cp1251.&lt;br /&gt;
&lt;br /&gt;
Кодировки в MySQL-командах пишутся без кавычек и без &amp;quot;-&amp;quot; (дефисов). Популярные в России кодировки: utf8, cp866 (DOS), cp1251 (windows-1251), koi8r.&lt;br /&gt;
&lt;br /&gt;
И, наконец, пара советов:&lt;br /&gt;
* Если вы в этом новичок, постарайтесь свести всё к одной кодировке. Пусть у вас дамп и &amp;quot;default-character-set&amp;quot; (напомню, влияет на кодировку хранилища при создании таблиц и на кодировку общения с клиентом) будет в одной кодировке. Это избавит от путаницы и решит 90% проблем.&lt;br /&gt;
* Если есть возможность - используйте консольную утилиту mysqldump. phpMyAdmin - это дополнительная прослойка, которая лишь добавляет свою путаницу и свои баги.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Сервисы]]&lt;/div&gt;</summary>
		<author><name>TTK</name></author>
	</entry>
</feed>