Проблемы с подключением к базе
Содержание
Подключение портала к базе
Сервер БД запущен?
Как проверить
Для Superserver:
service firebird status
Название сервиса "firebird" может отличаться между дистрибутивами. Например, может быть "firebird2.1" или "firebird-superserver".
Для classic:
Classic работает через xinetd. Поэтому первым делом проверьте, запущен ли он.
service xinetd status
Возможно, после установки firebird требуется перезапустить xinetd, чтобы он перечитал файлы конфигурации, в том числе и конфиг для firebird-classic.
Как исправить
Попробуйте перезапустить firebird-superserver или xinetd в зависимости от установленной версии firebird:
# classic service xinetd restart # superserver service firebird start
Убедитесь также, что в /etc/services есть запись для firebird:
grep gds_db /etc/services gds_db 3050/tcp
Если нет, добавьте.
Результат должен быть таким: firebird должен отвечать на порту tcp/3050.
# Проверка прямо на сервере telnet 127.0.0.1 3050
Сервер перезагрузили, а firebird снова не запущен?
Исправление:
# пример из убунты 10.04 lts update-rc.d firebird2.1-super enable # пример из alt linux chkconfig firebird on
Правильно ли указан адрес сервера и путь к базе в конфиге?
Как проверить
Выполните и сверьтесь:
grep db_ /var/www/cgi-bin/sp/sp.conf db_server = 127.0.0.1 # <--- адрес сервера db_path = /path/to/database.gdb # <--- путь к базе db_user = *** db_pass = *** grep cmsdb /var/www/cgi-bin/sp/sp.conf cmsdbhost = 127.0.0.1 # <--- адрес сервера cmsdbname = /path/to/database-cms.gdb # <--- путь к базе cmsdbuser = *** cmsdbpasswd = ***
Файлы должны существовать на сервере с указанным адресом (допустимы IP-адреса и DNS-имена). Файл должен быть доступен firebird. Убедитесь, что пользователю firebird разрешено читать и писать в файлы БД.
Пример исправления:
# выяснить, есть ли файл и какие у него права и владелец ls -l /path/to/database.gdb # задать владельца chown firebird:firebird /path/to/database.gdb # задать права на чтение и запись (остальным нужно запретить всё) chmod 660 /path/to/database.gdb
Правильно ли указан логин и пароль?
Как проверить:
# Значения переменных СЕРВЕР, БАЗА, ЛОГИН, ПАРОЛЬ # брать в /var/www/cgi-bin/sp/sp.conf # Основная база данных: # переменные db_server, db_path, db_user, db_pass # Система управления Школьным сайтом: # переменные cmsdbhost, cmsdbname, cmsdbuser, cmsdbpasswd isql СЕРВЕР:БАЗА -user ЛОГИН -pass ПАРОЛЬ
В ответ вы должны увидеть приглашение порулить базой:
Database: СЕРВЕР:БАЗА, User: ЛОГИН
Чтобы выйти из инструмента isql, наберите quit;
или нажмите Ctrl + D.
Инструмент isql может называться fbsql, isql-fb в зависимости от дистрибутива.
Если вы не увидели приглашение, а вместо этого получили отказ, устраните причину и попробуйте снова. Типичные проблемы: неверный путь, права доступа или владелец, неправильно указан пароль.
Чтобы изменить пароль, воспользуйтесь советами из документации по Firebird (помните о различии в путях в разных дистрибутивах, не воспроизводите рецепты без вникания):
- http://www.firebirdsql.org/manual/ru/qsg15-other-necessities-ru.html#d0e937
- http://www.firebirdsql.org/file/documentation/reference_manuals/user_manuals/html/ru/fbutils-scripts-dba-password-ru.html
- http://www.ibprovider.com/rus/documentation/firebird.html#firebird_sysdba_user_management
Фаерволл
Если вы используете firebird-classic, нет ли ограничения по адресам?
# проверка grep only_from /etc/xinetd.d/firebird
Нет ли правила в iptables, запрещающего всё, кроме разрешённого, причём в разрешённом нет tcp/3050?
Нет ли правила в iptables, запрещающего соединения на tcp/3050?
iptables --list | less