27 Фев

Check syntax my.cnf

У httpd есть замечательный параметр в init-скрипте configtest.
У nginx’а есть еще более замечательный nginx -t (да и nginx -s reload все расскажет без даунтайма).
А вот mysql подобным инструментом обделили.

Но способ есть. Вносим лбые изменения в my.cnf и без каких-либо рестартов и логов проверяем:

 # /usr/sbin/mysqld --help

[ERROR] /usr/sbin/mysqld: unknown variable 'mysql_blabla=1'
[Warning] The syntax '--log-slow-queries' is deprecated and will be removed in a future release.
Please use '--slow-query-log'/'--slow-query-log-file' instead.
05 Апр

Переписал XTips.ru

Обновил свой давненький проект XTips.ru.
Переписал все с нуля, дизайн переделал полностью, оставив минимализм (спасибо, bootstrap).
Считаю, что регистрация на подобного рода сайтах не нужна по определению, поэтому ей даже не занимался, написав лишь свою небольшую библиотечку для авторизации через oauth твиттера.
После авторизации можно легко отправлять свои хаки и прочие советы, которые затем уйдут в премодерацию. которая обычно занимает считаные минуты.
Возможность оставлять комментарии к хакам тоже убрал, поскольку данная возможность успехом не пользовалась и на 1% (вполне ожидаемо, думаю).
Облако тегов сделал, выборку по тегам тоже, как и поиск по содержимому заголовков и самих текстов.

В итоге код получился примерно в 3 раза короче, а скорость работы в 4-5 раз быстрее (хотя на скорость и так никто не жаловался).
Любые идеи и предложения только приветствуются.

28 Фев

Проблемы с debian-sys-maint в MySQL

Скажу честно — я понятия не имею, что это за mysql-пользователь debian-sys-maint в Debian’е, и я даже не пытался это выяснить.Но лично многим моим клиентам он жизнь портит, соответственно — мне тоже.
Из-за него же нормально не получается скриптом /etc/init.d/mysql даже остановить MySQL.
Просто вылазит вот такая ошибка:

Stopping MySQL database server: mysqld.
Starting MySQL database server: mysqld.
Checking for corrupt, not cleanly closed and upgrade needing tables..
/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
debatest:~# /usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'

Ясно дело, что проблема с паролем этого юзера в БД mysql, но из-за чего случилась эта проблема — это неизвестная переменная, которая нам ничего не говорит о том, зачем вообще нужен этот юзер.
Ладно, как сменить пароль на его «собственный»?
Узнать такой пароль не проблема, он лежит в /etc/mysql/debian.cnf, а в нем строчка с паролем.
Копируем пароль (или задаем новый), заходим под root’ом в mysql и далее:

mysql> use mysql;
mysql> GRANT RELOAD, SHUTDOWN, PROCESS, SHOW DATABASES, SUPER, LOCK TABLES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'тут тот самый пароль';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'оп/ть тот самый пароль' WITH GRANT OPTION;
# /etc/init.d/mysql restart

Проблема решена, ждем следующую.

05 Фев

Сброс пароля MySQL

Сперва останавливаем mysql(d):

/etc/init.d/mysql(d) stop

запускаем в «безопасном режиме»

/usr/sbin/mysqld --skip-grant-tables &

делаем вход без пароля:

mysql -u root

устанавливаем новый пароль:

USE mysql;
UPDATE mysql.user SET password=Password('НовыйСекретныйПароль') WHERE user='root';

Далее убиваем mysql через ps|kill и снова запускаем, как надо:

/etc/init.d/mysql(d) start