Это старая версия документа.


MySQL — свободная СУБД для малых и средних приложений. Входит в состав LAMP.

Настройка кодировок

Мне было необходимо, чтобы сервер MySQL работал с кодировкой utf8. По-умолчанию в Ubuntu MySQL устанавливается с кодировкой latin1. Это можно посмотреть:

mysql> show variables like 'char%';

в результате получим вот такой вывод:

character_set_client   latin1                      
character_set_connection latin1                    
character_set_database    latin1                    
character_set_filesystem   binary                   
character_set_results    latin1                    
character_set_server     latin1                   
character_set_system    utf8                       
character_sets_dir       /usr/share/mysql/charsets/

В связи с этим, даже используя при работе с сервером команду

set names utf8;

и используя при создании таблиц

...DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

мы не добьёмся полной поддержки кодировки utf8:

character_set_client    utf8                        
character_set_connection  utf8                       
...                    
character_set_server        latin1                  
...            
character_sets_dir         /usr/share/mysql/charsets/

Кодировка по-умолчанию все равно останется latin1, что неудобно.

Чтобы сервер сразу загружался с нужной нам кодировкой, необходимо в файл my.cnf добавить несколько строк:

nano -w /etc/mysql/my.cnf

в секцию [mysqld] добавим следующий код:

skip-character-set-client-handshake
default-character-set=utf8
init-connect='SET NAMES utf8'
default-collation=utf8_general_ci

Перезагрузим сервер MySQL:

/etc/init.d/mysql restart

FIXME использовать services?

После этого список переменных будет выглядеть так:

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/

Чего мы и добивались.

Восстановление забытого пароля для root'a

1. Надо остановить mysqld.

2. Запустите mysqld с параметрами –skip-grant-tables –user=root.

mysqld --skip-grant-tables --user=root

3. Подключитесь к mysql серверу этой командой:

mysql -u root

4. Обновите запись для root'a

UPDATE mysql.user SET Password=PASSWORD('<новый пароль>') WHERE User='root';
FLUSH PRIVILEGES;

Теперь можете логиниться под root с новым паролем.

Ссылки