Содержание подраздела:
Несколько заметок по mysql
mysql 5 + php 5 = utf8 везде и всюду
mysql 5
php 5
Везде тотально utf8
локаль uft8
базы, данные, сам дамп в utf8
сайт в utf8.
Всё в utf8 от и до. Вплоть до хэдеров самой страницы:
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
И?
Кривая кодировка сайта. =(
Если не верите, то вот:
mysql> SHOW VARIABLES WHERE Variable_name 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/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
Причем сам мускуль (после uft8 выправки конфигов в utf8 вместо идиотской latin1) данные выводит нормально.
Что ни выделывал, как с бубном ни танцевал - бесполезно.
Если в php скрипте насильно прописать
mysql_query('SET NAMES utf8');
то всё работает.
Если убрать - перестает работать.
Решилось всё насильной установкой mysql серверу параметров загрузки.
--init_connect="SET NAMES 'utf8'"
То есть в конфиге, в секцию сервера была добавлена строчка, насильно устанавлявающая NAMES в utf8:
[mysqld]
init_connect="SET NAMES 'utf8'"
character_set_server=utf8
collation_server=utf8_general_ci
И о чудо! оно заработало!
В итоге настройки для тотального utf8 в mysqld выглядят так:
mysql> SHOW VARIABLES WHERE Variable_name LIKE '%character%' OR Variable_name LIKE '%collation%' OR Variable_name = 'init_connect';
+--------------------------+----------------------------+
| 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/ |
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
| init_connect | SET NAMES 'utf8' |
+--------------------------+----------------------------+
12 rows in set (0.00 sec)
Обратите внимание на init_connect и SET NAMES 'utf8'
Восстановление забытого пароля mysql
Когда администрируешь множество серверов, то существует вероятность, что на одном из серверов вы забудете пароль доступа к mysql.
И root и сервер наш, а доступа к базам нет.
При этом хотелось бы не терять важные данные из mysql баз.
Как же взломать админский пароль не уничтожая данные?
Оказывается, получить доступ к mysqld будучи рутом на сервере просто:
Вуаля. Сервер не пришлось убивать, базы остались как и были в целостности и сохранности.
Никаких данных не пострадало, кроме измененной записи в таблице привилегий.
|