среда, 4 июля 2012 г.

Некоторые ошибки mysql 5.5

1 В оригинальном 5.5 и модификациях типа перконы убрана из блока mysqld опция default-character-set, в результате в логе может быть ошибка
mysqld: unknown variable 'default-character-set=cp1251'

В секции [client] она рабочая.
Решение: убрать эту опцию из [mysqld] и добавить
init-connect='SET NAMES cp1251'
также возможно
skip-character-set-client-handshake
Если нужна именно такая строка - оставайтесь на 5.1/5.0

2 Странная ошибка в debian
ERROR 1133 (42000): Can't find any matching row in the user table
при попытке выполнить
grant all privileges on test.* to user@localhost identified by 'pass';
Причина первая: если такого юзера нет, и прописываем identified by '' - надо сначала создать юзера. Багу много лет, но никому нет дела. Но вообще юзеры без пароля - плохая практика.
Если что - создать юзера: CREATE USER 'user'@'localhost' IDENTIFIED BY 'some_pass';
Но если и на create user выдаст
ERROR 1396 (HY000): Operation CREATE USER failed for 'user'@'localhost'
то всё грустно. См причину 2, и ошибку 3.
Причина вторая: надо сделать flush privileges и после этого команда отработает как надо. Но один раз вызвало ошибку номер 3 (см ниже)

3 Ошибка в debian, с которой за неделю довелось столкнуться десяток раз:
error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
Часто каким-то образом следовало из ошибки 2. Это спец юзер для обслуживания сервера, характерен только для debian.
Сначала делаем
cat /etc/mysql/debian.cnf
и копируем оттуда пароль. теперь коннектимся от рута к базе (если он неизвестен - есть опция --skip-grant-tables) и выполняем запрос
GRANT RELOAD, SHUTDOWN, PROCESS, SHOW DATABASES, SUPER, LOCK TABLES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'пароль-из-файла-выше';
flush privileges;

Некоторые указывают GRANT ALL PRIVILEGES... WITH GRANT OPTION; но я не знаю, есть ли в этом нужда и не опасно ли это.

4 особенности с includedir
Багу также много лет. Игнорируются файлы, в названии которых больше одной точки, плюс расширение обязано быть .cnf, что означает полную недопустимость точек в имени до расширения.
Например, general.cnf будет учтён, а вот general.mynode.cnf будет просто проигнорирован. Судя по тому, что на ошибки в таких файлах не ругается, их даже не открывает.

Комментариев нет:

Отправить комментарий