Перенос базы на linux сервер
Модераторы: Анастасия, Дмитрий
Перенос базы на linux сервер
Уважамые разработчики! Не могли бы Вы подсказать каким образом можно перенести базу программы на Linux сервер. Интересует сам процесс установки firebird сервера на готовую систему debian 7 (wheezy) и пернос на сервер базы Money Tracker c последующим подключением к этой базе с машины под управлением windows 7 с установленным Money Tracker. Заранее благодарю за содействие!
Re: Перенос базы на linux сервер
Подробная инструкция по установке Firebird Server есть здесь: http://linux-bash.ru/mseti/61-firebird.html, последняя версия Firebird 2.1 здесь: http://www.firebirdsql.org/en/firebird-2-1/. Сами не проверяли, но по идее должно работать. Также если у вас Debian, можно попробовать загуглить репозиторий.
Что касается клиентской части, параметры соединения с базой данных прописываются в файле MoneyTracker.ini, расположенном в папке Документы\DominSoft\MoneyTracker, параметры ServerName и DatabaseName. Также можно задать имя пользователя и пароль для подключения к базе, по умолчанию они SYSDBA и masterkey соответственно (именно в таком регистре).
Что касается клиентской части, параметры соединения с базой данных прописываются в файле MoneyTracker.ini, расположенном в папке Документы\DominSoft\MoneyTracker, параметры ServerName и DatabaseName. Также можно задать имя пользователя и пароль для подключения к базе, по умолчанию они SYSDBA и masterkey соответственно (именно в таком регистре).
Re: Перенос базы на linux сервер
А подскажите,пожалуйста, для чего в ярлыке запуска программы указан User="1" ?
Re: Перенос базы на linux сервер
Для автоматического входа в программу под пользователем с этим идентификатором.
Re: Перенос базы на linux сервер
Означает ли это что данный пользователь должен быть зарегестрирован в списке пользователей linux сервера и ему даны права (какие?) на файл базы данных?Дмитрий писал(а):Для автоматического входа в программу под пользователем с этим идентификатором.
Re: Перенос базы на linux сервер
Как в файле MoneyTracker задать имя пользователя и пароль? Как "UserName=" и "Password=" ? Или как-то ещё?Дмитрий писал(а):Также можно задать имя пользователя и пароль для подключения к базе, по умолчанию они SYSDBA и masterkey соответственно (именно в таком регистре).
Re: Перенос базы на linux сервер
Это пользователь в программе, заданный в справочнике пользователей. К серверу СУБД он не имеет отношения, все пользователи программы подключаются под одним пользователем уровня БД.iluxxa писал(а):Означает ли это что данный пользователь должен быть зарегестрирован в списке пользователей linux сервера и ему даны права (какие?) на файл базы данных?
Не заметил, что не написал этого, извините. Да, это параметры UserName и Password секции DB файла MoneyTracker.ini.iluxxa писал(а):Как в файле MoneyTracker задать имя пользователя и пароль? Как "UserName=" и "Password=" ? Или как-то ещё?
Re: Перенос базы на linux сервер
Огромное спасибо за все ответы! Буду добивать настройку сервера! Постараюсь отписаться о результатах и описать весь процесс. СПАСИБО!!!
Re: Перенос базы на linux сервер
Здравствуйте!
Наконец-то у меня дошли руки до настройки домашнего сервера. По вышеупомянутой инструкции настроил Firebird сервер. Могу локально подключаться к базе и выполнять запросы к ней.Пример:
1.Проверяю работу Firebird:
ps ax | grep fbserver
24531 pts/0 S+ 0:00 grep fbserver
Процесс запущен.
2. Проверяю порт 3050:
netstat -an | grep 3050
tcp 0 0 0.0.0.0:3050 0.0.0.0:* LISTEN
Сервер слушает порт 3050 - ОК.
3.Запускаю утилиту isql:
/opt/firebird/bin/isql -user sysdba -password masterkey
4.Подключаюсь к базе:
SQL> connect /srv/dev-disk-by-label-Mirror/MIRROR/money_tracker/mt.fdb;
Database: /srv/dev-disk-by-label-Mirror/MIRROR/money_tracker/mt.fdb, User: sysdba
5.Вывожу список таблиц:
SQL> show tables;
ACCOUNT ACCOUNTGROUP
ACCOUNTTOTALBYDATE BORROWING
BORROWINGPAYMENT BUDGET
BUDGETCONSTRAINT BUDGETNODE
BUDGETNODEITEM CALENDAREVENT
CALENDAREXPENSE CALENDAREXPENSEEXECUTE
CALENDAREXPENSEEXECUTEITEM CALENDARINCOME
CALENDARINCOMEEXECUTE CALENDARINCOMEEXECUTEITEM
CALENDARLABEL CALENDARMONEYTRANSFER
CALENDARMONEYTRANSFEREXECUTE CALENDARNOTE
CALENDARREMIND COMMGROUP
COMMODITY COMMPRICE
DBINFO DEFAULTSETTINGS
DEFAULTSETTINGSITEM EXPENSE
EXPENSEITEM EXPENSEPLAN
EXPENSEPLANITEM INCOME
INCOMEITEM INCOMEPLAN
INCOMEPLANITEM LENDING
LENDINGPAYMENT MONEYEXCHANGE
MONEYTRANSFER MONEYTRANSFERPLAN
MONEYTYPE MONEYTYPERATE
MONEYTYPERATESOURCE ORGANIZATION
ORGANIZATIONGROUP STOREDREPORT
STOREDREPORTGROUP UNITTYPE
USERMT USERSETTINGS
USERSETTINGSCODE
6.База прописана в /opt/firebird/aliases.conf вот так:
mt = /srv/dev-disk-by-label-Mirror/MIRROR/money_tracker/mt.fdb
mt.fdb = /srv/dev-disk-by-label-Mirror/MIRROR/money_tracker/mt.fdb
Права на базу 0770, владелец firebird/firebird
ЛОКАЛЬНО всё работает.
7.Тельнетом проверяю работу Firebird сервера с удалённой машины (Windows 7 64bit)
telnet 192.168.88.2 3050 - порт отвечает, соединение есть.
8.Пишу параметры соединения с базой в MoneyTracker.ini:
[DB]
ServerName=192.168.88.2
DatabaseName=mt.fdb
UserName=SYSDBA
Password=masterkey
Где 192.168.88.2 - адрес моего сервера, где крутится Firebird сервер
При запуске MoneyTracker получаю вот что:
"Exception EZSQLException in module MoneyTracker.exe at 001A7073.
SQL Errpr: I/O error for file "mt.fdb" Error while trying to open file
Permission denied. Error code:-902. Unsuccessful execution caused by
a system error that precludes
successful execution of subsequent statments."
Такое же сообщение для другого MoneyTracker.ini:
[DB]
ServerName=192.168.88.2
DatabaseName=/srv/dev-disk-by-label-Mirror/MIRROR/money_tracker/mt.fdb
UserName=SYSDBA
Password=masterkey
Понимаю что что-то не так с ACL на базу. Но вот не могу понять - ЧТО??? Может неправильно написан MoneyTracker.ini??? Помогите, пожалуйста!!!
Наконец-то у меня дошли руки до настройки домашнего сервера. По вышеупомянутой инструкции настроил Firebird сервер. Могу локально подключаться к базе и выполнять запросы к ней.Пример:
1.Проверяю работу Firebird:
ps ax | grep fbserver
24531 pts/0 S+ 0:00 grep fbserver
Процесс запущен.
2. Проверяю порт 3050:
netstat -an | grep 3050
tcp 0 0 0.0.0.0:3050 0.0.0.0:* LISTEN
Сервер слушает порт 3050 - ОК.
3.Запускаю утилиту isql:
/opt/firebird/bin/isql -user sysdba -password masterkey
4.Подключаюсь к базе:
SQL> connect /srv/dev-disk-by-label-Mirror/MIRROR/money_tracker/mt.fdb;
Database: /srv/dev-disk-by-label-Mirror/MIRROR/money_tracker/mt.fdb, User: sysdba
5.Вывожу список таблиц:
SQL> show tables;
ACCOUNT ACCOUNTGROUP
ACCOUNTTOTALBYDATE BORROWING
BORROWINGPAYMENT BUDGET
BUDGETCONSTRAINT BUDGETNODE
BUDGETNODEITEM CALENDAREVENT
CALENDAREXPENSE CALENDAREXPENSEEXECUTE
CALENDAREXPENSEEXECUTEITEM CALENDARINCOME
CALENDARINCOMEEXECUTE CALENDARINCOMEEXECUTEITEM
CALENDARLABEL CALENDARMONEYTRANSFER
CALENDARMONEYTRANSFEREXECUTE CALENDARNOTE
CALENDARREMIND COMMGROUP
COMMODITY COMMPRICE
DBINFO DEFAULTSETTINGS
DEFAULTSETTINGSITEM EXPENSE
EXPENSEITEM EXPENSEPLAN
EXPENSEPLANITEM INCOME
INCOMEITEM INCOMEPLAN
INCOMEPLANITEM LENDING
LENDINGPAYMENT MONEYEXCHANGE
MONEYTRANSFER MONEYTRANSFERPLAN
MONEYTYPE MONEYTYPERATE
MONEYTYPERATESOURCE ORGANIZATION
ORGANIZATIONGROUP STOREDREPORT
STOREDREPORTGROUP UNITTYPE
USERMT USERSETTINGS
USERSETTINGSCODE
6.База прописана в /opt/firebird/aliases.conf вот так:
mt = /srv/dev-disk-by-label-Mirror/MIRROR/money_tracker/mt.fdb
mt.fdb = /srv/dev-disk-by-label-Mirror/MIRROR/money_tracker/mt.fdb
Права на базу 0770, владелец firebird/firebird
ЛОКАЛЬНО всё работает.
7.Тельнетом проверяю работу Firebird сервера с удалённой машины (Windows 7 64bit)
telnet 192.168.88.2 3050 - порт отвечает, соединение есть.
8.Пишу параметры соединения с базой в MoneyTracker.ini:
[DB]
ServerName=192.168.88.2
DatabaseName=mt.fdb
UserName=SYSDBA
Password=masterkey
Где 192.168.88.2 - адрес моего сервера, где крутится Firebird сервер
При запуске MoneyTracker получаю вот что:
"Exception EZSQLException in module MoneyTracker.exe at 001A7073.
SQL Errpr: I/O error for file "mt.fdb" Error while trying to open file
Permission denied. Error code:-902. Unsuccessful execution caused by
a system error that precludes
successful execution of subsequent statments."
Такое же сообщение для другого MoneyTracker.ini:
[DB]
ServerName=192.168.88.2
DatabaseName=/srv/dev-disk-by-label-Mirror/MIRROR/money_tracker/mt.fdb
UserName=SYSDBA
Password=masterkey
Понимаю что что-то не так с ACL на базу. Но вот не могу понять - ЧТО??? Может неправильно написан MoneyTracker.ini??? Помогите, пожалуйста!!!
Re: Перенос базы на linux сервер
Вероятнее всего в данном случае, что у пользователя Linux, под которым запущен сервер Firebird, нет прав на доступ к файлу базы. В случае с запуском isql на сервере осуществлялся локальный доступ к базе, минуя сервер, т.е. под тем же пользователем, под которым запущен isql. Также в Linux имя пользователя Firebird (SYSDBA) чувствительно к регистру, и если в isql сработало в нижнем регистре, то и в MoneyTracker.ini надо писать в нижнем.
Re: Перенос базы на linux сервер
Ура! Всё получилось! Я дал права на файл базы и вышестоящий каталог пользователю firebird и сделал его владельцем каталога и базы. И всё заработало! Теперь я могу с разных компов напрямую работать в Money Tracker! Могу написать пошаговую инструкцию по переносу базы Money Tracker на debian сервер! Админам интересно это?
Re: Перенос базы на linux сервер
Я думаю, что пользователи, способные установить Линукс, смогут найти в этом топике все ответы на возникающие вопросы 

Re: Перенос базы на linux сервер
ОК! Тогда можно закрывать тему как "решено" или как тут на форуме можно?
Re: Перенос базы на linux сервер
Все-таки подытожу:
1. Перенесенный на сервер файл и ВСЕ вышестоящие папки должны быть даны на полный доступ пользователю firebird, а также этот пользователь должен быть ВЛАДЕЛЬЦЕМ базы mt.fdb (если я тут приврал - админы поправят меня)
2. База mt.fdb должна быть прописана в настройках Firebird сервера в aliases.conf (если не хотите прописывать, то придётся в MoneyTracker.ini в раздел DatabaseName прописывать ПОЛНЫЙ путь к базе....А кому оно надо???), например если файл лежит в папке /srv/dev-disk-by-label-Mirror/money_tracker (как у меня), то пишем её в aliases.conf (который для моего, установленного по инструкции в этом топике, сервера лежит по в папке /opt/firebird/) как:
mt = /srv/dev-disk-by-label-Mirror/money_tracker/mt.fdb, где mt - это имя (алиас) базы Money Tracker, который можно задать произвольно, главное чтобы потом этот алиас записать в MoneyTracker.ini в строку DatabaseName=
Соответственно MoneyTracker.ini должен выглядеть так:
[DB]
ServerName=nas
DatabaseName=mt
UserName=SYSDBA
Password=вашпароль
Где "ServerName" - dns имя или IP адрес Вашего сервера (это уж зависит от настроек Вашей локальной сети и настроек сервера, у меня DNS сервер локальный есть...хехе)
"DatabaseName" - АЛИАС базы, прописанный в aliases.conf
"UserName" - всегда SYSDBA
"Password" - ваш пароль для пользователя SYSDBA Firebird сервера, который можно установить при установке сервера. По умолчанию он "masterkey". Я, кстати, его сменил (мало ли чего, безопасности много не бывает).
Сменить пароль для данной версии Firebird сервера можно так:
Переходим в каталог /opt/firebird/bin:
cd /opt/firebird/bin
Запускаем скрипт changeDBAPassword.sh:
./changeDBAPassword.sh
И вводим 2 раза ваш пароль для пользователя SYSDBA, который потом и используем в данной секции MoneyTracker.ini.
Всё это, конечно, выполняем в командной строке.
Всем спасибо за внимание, всем удачной настройки! И не забываем про бэкап своей любимой базы, а то мало ли чего.
1. Перенесенный на сервер файл и ВСЕ вышестоящие папки должны быть даны на полный доступ пользователю firebird, а также этот пользователь должен быть ВЛАДЕЛЬЦЕМ базы mt.fdb (если я тут приврал - админы поправят меня)
2. База mt.fdb должна быть прописана в настройках Firebird сервера в aliases.conf (если не хотите прописывать, то придётся в MoneyTracker.ini в раздел DatabaseName прописывать ПОЛНЫЙ путь к базе....А кому оно надо???), например если файл лежит в папке /srv/dev-disk-by-label-Mirror/money_tracker (как у меня), то пишем её в aliases.conf (который для моего, установленного по инструкции в этом топике, сервера лежит по в папке /opt/firebird/) как:
mt = /srv/dev-disk-by-label-Mirror/money_tracker/mt.fdb, где mt - это имя (алиас) базы Money Tracker, который можно задать произвольно, главное чтобы потом этот алиас записать в MoneyTracker.ini в строку DatabaseName=
Соответственно MoneyTracker.ini должен выглядеть так:
[DB]
ServerName=nas
DatabaseName=mt
UserName=SYSDBA
Password=вашпароль
Где "ServerName" - dns имя или IP адрес Вашего сервера (это уж зависит от настроек Вашей локальной сети и настроек сервера, у меня DNS сервер локальный есть...хехе)
"DatabaseName" - АЛИАС базы, прописанный в aliases.conf
"UserName" - всегда SYSDBA
"Password" - ваш пароль для пользователя SYSDBA Firebird сервера, который можно установить при установке сервера. По умолчанию он "masterkey". Я, кстати, его сменил (мало ли чего, безопасности много не бывает).
Сменить пароль для данной версии Firebird сервера можно так:
Переходим в каталог /opt/firebird/bin:
cd /opt/firebird/bin
Запускаем скрипт changeDBAPassword.sh:
./changeDBAPassword.sh
И вводим 2 раза ваш пароль для пользователя SYSDBA, который потом и используем в данной секции MoneyTracker.ini.
Всё это, конечно, выполняем в командной строке.
Всем спасибо за внимание, всем удачной настройки! И не забываем про бэкап своей любимой базы, а то мало ли чего.