| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Firebird, Interbase > FBierd 2.0 смена логина и пароля |
| Автор: sith 18.10.2007, 09:02 |
| ... вообщем то хочу разобраться в таком деле... ... я делаю базы данных в IBExpert... есть ли у него такая функция по смене логина и пароля... или нужно всеравно консольно использовать gsec ... и хотелось бы понять... SYSDBA masterkey это логин пароль БД или самого СУБД...? ... и как мне сделать пароль и логин непосредственно на базуданных... ? |
| Автор: Anark1 18.10.2007, 10:31 |
| sith, 1. С IBExpert не работал, но думаю можно. 2. SYSDBA - зарезервированное имя, masterkey - пароль по умолчанию. Пароль ставится не на БД, а на сервер. То есть для всех БД, обслуживаемых одним сервером сохраняется один и тот же список пользователей. 3. Непосредственно на БД нужно писать самому. Создаешь таблицу USERS, в ней LOGIN, PASS. И вручную обрабатываешь соединение. |
| Автор: sith 18.10.2007, 21:22 |
| 3. Непосредственно на БД нужно писать самому. Создаешь таблицу USERS, в ней LOGIN, PASS. И вручную обрабатываешь соединение. ... а как это делаеться...? |
| Автор: Anark1 18.10.2007, 21:39 | ||||
SQL запрос создающий таблицу. Скопировал кусок из проекта, для твоей задачи поле RID, думаю не обязательно. Дальше на приложении клиенте две поля - для логина и пароля. И кнопочку коннект. Обработчик события OnClick этой кнопки может выглядеть например так :
Код C++ Builder \ InterBase \ InterBase Express Я ответил на вопрос ? |
| Автор: sith 18.10.2007, 23:43 |
| ну почти... если бы ты написал код на Java:) ... может просто алгоритм опишешь... по подробнее...? |
| Автор: Anark1 19.10.2007, 20:08 | ||
| sith, интересный ты человек на Java, к сожалению, не пишу. Могу описать алгоритм. Идея заключается в том, чтобы найти запись с данными логином и паролем. 1. Формируем строку запроса вида
2. В поле rcount нам вернется количество записей. При этом поля Login и Pass должны быть основой для уникального составного индекса. Это для того, чтобы связка логин+пароль не повторялась. 3. Таким образом значение поля может быть 1 - если такой пользователь есть. И 0 - если таких пользователей нет. 4. А затем соответственно выполняется дальнейшая часть кода, или выкидывается сообщение типа "User not found". |
| Автор: sith 19.10.2007, 22:55 |
| ... фух... сложновато... но в любом случае... все это дело не прописываеться в мета данные самой базы данных... я в своем коде делаю все эти проверки и установки... то есть... любой пользователь может написать свой код и работать с моей базой данных как того возжелает...? или не так? |
| Автор: Anark1 20.10.2007, 14:36 |
| sith, любой пользователь, который знает связку login - password для сервера может выполнять все разрешенные данному аккаунту операции над твоей БД. По этому то и следует меня пароль для SYSDBA. Я ответил, как мне кажется, довольно полно. Все вроде бы понятно написал. Если даже тут возникают вопросы, то стоит что нибудь почитать. И ничего сложного в этом нет. Если создается многопользовательское приложение, содержащее очень много пользователей, при этом каждый пользователь имеет свои уникальные настройки, то целесообразно хранить пользователей именно в таблице БД. Хотя с помощью средств InterBase Express, выполнив соединение под SYSDBA, можно добавлять удалять пользователей. Именно на уровне сервера, а не как запись в нашей таблице USERS. |