Ticket #78 (closed defect: fixed)

Opened 3 years ago

Last modified 6 months ago

SAMS неверно зачитывает параметры конфигурации содержащие символ #

Reported by: weih Owned by: DmitryChemerik
Priority: minor Milestone: sams-2.0
Component: demons Version: 1.0.0
Keywords: Cc:

Description

Конфигурация:

ОС: Debian Etch 4.0 (i386)

MySQL: mysql-server-5.0 (5.0.32-7etch1)

Apache: apache2 (2.2.3-4+etch1)

PHP: libapache2-mod-php5 (5.2.0-8+etch7)

php5 (5.2.0-8+etch7)

php5-common (5.2.0-8+etch7)

php5-gd (5.2.0-8+etch7)

php5-mcrypt (5.2.0-8+etch7)

php5-mysql (5.2.0-8+etch7)

SQUID: squid (2.6.5-6)

SAMS: sams-1.0

устанавливал SAMS на "чистую" систему по инструкции  http://sams.nixdev.net/wiki/debian4.0

Описание проблемы:

squid, mysql, apache2 перед запуском sasmdaemon уже стартовали.

При попытке запуска sasmdaemon выдается следующее:

# samsdaemon -d

Starting process: pid = 25613

Read SAMS configuration... Ok

Connected database: squidctrl:localhost user=sams

mysql_real_connect() error 0. no open database squidctrl, DELAY 3 sec

mysql_real_connect() error 1. no open database squidctrl, DELAY 3 sec

mysql_real_connect() error 2. no open database squidctrl, DELAY 3 sec

mysql_real_connect() error 3. no open database squidctrl, DELAY 3 sec

mysql_real_connect() error 4. no open database squidctrl, DELAY 3 sec

mysql_real_connect() error 5. no open database squidctrl, DELAY 3 sec

после чего отваливается.

При этом веб-интерфейс работает нормально (можно посмотреть все настройки SAMS и пользователей, состояние файловых систем сервера,ОП, swap).

В файле /etc/sams.conf логин и пароль пользователя указаны верно (под ними получается зайти в БД)

В логах mysql ни коннектов ни ошибок не зафиксировано.

Attachments

Change History

  Changed 3 years ago by PavelVinogradov

  • status changed from new to closed
  • resolution set to invalid

  Changed 2 years ago by virl@…

  • status changed from closed to reopened
  • resolution invalid deleted

Проблема существует - не запускается samsdaemon на Fedora 7.

follow-up: ↓ 4   Changed 2 years ago by DmitryChemerik

Я запускал sams на 7-й федоре.

Надо включить логирование запросов в mysql. Добавляем в /etc/my.cnf строку log=/var/log/queries и перезагружаем mysql. запускаем samsdaemon и смотрим в лог.

Кстати. однажды было такое - samsdaemon пытался коннектиться к mysql по сети на порт 3306, х.з. из-за чего. разрешение mysql слушать порт все решило.

in reply to: ↑ 3   Changed 2 years ago by anonymous

Replying to DmitryChemerik:

Надо включить логирование запросов в mysql. Добавляем в /etc/my.cnf строку log=/var/log/queries и перезагружаем mysql. запускаем samsdaemon и смотрим в лог.

Пишет

15 Connect     Access denied for user 'sams'@'localhost' (u
sing password: YES)

Причем из консоли mysql'ом - логинится. Пробовал MySQL-пользозвателю давать права на коннект с любого хоста, в конфиге MySQL - прописывать бинд на все интерфейсы, обнулять пароль рута MySQL - ничего не помогает.

  Changed 2 years ago by virl@…

Да, веб интерфейс-то работает нормально, что странно.

Также пробовал в конфиге MySQL отключать old_passwords - тоже не помогло.

  Changed 2 years ago by virl@…

Что интересно - из-под MySQL'ного root оно таки запустилось. Но непорядок.

  Changed 2 years ago by virl@…

Видимо дело в пароле пользователя mysql - при наличии в нем символов @ и # (собака и решетка) и букв разного регистра (или, может быть, чего-то одного из этого) демон samsd не коннектится к mysql.

  Changed 2 years ago by virl@…

Хотя все равно чертовщина какая-то: запускается только с mysql'ным root.

  Changed 2 years ago by PavelVinogradov

  • status changed from reopened to closed
  • resolution set to wontfix

  Changed 2 years ago by anonymous

Хм, баг пофиксен? Или бага нет?

follow-up: ↓ 12   Changed 2 years ago by PavelVinogradov

  • milestone set to sams-1.0.2

Это не бага, это фича.(с) Подобная ситуация возникает с паролем содержащим символ #. Т.к. символ # считается началом комментария в конфигурационном файле и соответственно часть сроки после него не рассматривается.

Т.к. обычно sams работает с БД от своего имени - рекомендую просто изменить пароль пользователя sams (так чтобы в нем не было символа #).

in reply to: ↑ 11   Changed 2 years ago by virl@…

Replying to PavelVinogradov:

Это не бага, это фича.(с) Подобная ситуация возникает с паролем содержащим символ #. Т.к. символ # считается началом комментария в конфигурационном файле и соответственно часть сроки после него не рассматривается.

Спасибо за ответ. Тогда, я думаю, нужно написать про # в комментариях в конфиг и в документацию (или же для поля пароля убрать парсинг коментариев).

follow-ups: ↓ 14 ↓ 15   Changed 2 years ago by PavelVinogradov

Тут вопрос в другом - нужны ли нам вообще комментарии в конфиге? А вот убрать парсинг комментариев для пароля - это очень плохое решение, т.к. добавляет больше проблем чем решает.

ps: А в местный FAQ я вопрос добавил:  http://sams.nixdev.net/wiki/faq

in reply to: ↑ 13   Changed 2 years ago by virl@…

Replying to PavelVinogradov:

Тут вопрос в другом - нужны ли нам вообще комментарии в конфиге?

Нужны - это одно из достоинств конфигов как таковых.

in reply to: ↑ 13   Changed 2 years ago by virl@…

Replying to PavelVinogradov:

А вот убрать парсинг комментариев для пароля - это очень плохое решение, т.к. добавляет больше проблем чем решает.

Можно просто сделать чтобы пароль нужно было заключать в двойные кавычки и все, что внутри них находится - не считается символами комментария.

follow-up: ↓ 17   Changed 2 years ago by PavelVinogradov

Мое личное мнение - это все неоправданное усложнение логики. Ибо тогда встает вопрос что делать с паролями содержащими двойные кавычки?

in reply to: ↑ 16 ; follow-up: ↓ 18   Changed 2 years ago by virl@…

Replying to PavelVinogradov:

Мое личное мнение - это все неоправданное усложнение логики. Ибо тогда встает вопрос что делать с паролями содержащими двойные кавычки?

Вот потому все, стоящее после "равно" в конфиге, должно восприниматься как пароль. В идеале вообще надо разрешить комменты только построчные - если первым символом строки является решетка (в самбовом конфиге вроде так и сделано). Это решает все вопросы.

in reply to: ↑ 17   Changed 2 years ago by PavelVinogradov

  • summary changed from Не запускается samsdaemon: mysql_real_connect() error 0. no open database squidctrl to SAMS неверно зачитывает параметры конфигурации содержащие символ #

Replying to virl@glint.ru:

Вот потому все, стоящее после "равно" в конфиге, должно восприниматься как пароль. В идеале вообще надо разрешить комменты только построчные - если первым символом строки является решетка (в самбовом конфиге вроде так и сделано). Это решает все вопросы.

Ну это мне кажется уже нормальным решением. Дмитрий?

follow-up: ↓ 21   Changed 2 years ago by anonymous

Я думаю это логично. Если решетка - первый символ в строке, то это комментарий Думаю поправлю и включу в trunc

  Changed 2 years ago by PavelVinogradov

  • priority changed from major to minor
  • status changed from closed to reopened
  • resolution wontfix deleted
  • milestone changed from sams-1.0.3 to sams-1.1.0

in reply to: ↑ 19   Changed 2 years ago by virl@…

Replying to anonymous:

Я думаю это логично. Если решетка - первый символ в строке, то это комментарий

Точнее комментарии могут быть только построковыми и только если первый символ в такой строке - решетка.

  Changed 2 years ago by PavelVinogradov

  • milestone changed from sams-1.1.0 to sams-2.x

  Changed 21 months ago by mclight77

  • status changed from reopened to closed
  • resolution set to fixed

Исправлено в [580]
Если первый непробельный символ # или ; то строка считается комментарием и игнорируется. Если эти символы встретились в середине строки, то считаются частью значения параметра.

  Changed 6 months ago by PavelVinogradov

  • milestone changed from sams-2.x to sams-2.0

Add/Change #78 (SAMS неверно зачитывает параметры конфигурации содержащие символ #)

Author


E-mail address and user name can be saved in the Preferences.


Action
as closed
Next status will be 'reopened'
 
Note: See TracTickets for help on using tickets.