Как проверить, работает ли пользователь и пароль без подключения к базе данных - PullRequest
2 голосов
/ 19 декабря 2008

Как проверить, работает ли пара пользователь / пароль без фактического подключения к базе данных? Рассматриваемая СУБД - MySQL.

Это был мой оригинальный вопрос. Поскольку большинство людей неправильно понимают этот вопрос, я должен перефразировать его следующим образом: Как проверить правильность имени пользователя и пароля MySQL, не подключаясь к MySQL как этот пользователь? (спасибо Дероберту)

Я действительно нашел решение, проверьте мой ответ ниже.

Ответы [ 6 ]

5 голосов
/ 19 декабря 2008

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

Но я бы порекомендовал не делать этого; это действительно внутренняя деталь реализации MySQL, и вы действительно не должны зависеть от этого. (например, что если MySQL когда-нибудь получит аутентификацию LDAP?)

1 голос
/ 19 декабря 2008

Войдите в систему как пользователь, имеющий доступ к базе данных (схема) mysql, и выполните: ВЫБЕРИТЕ COUNT (*) ИЗ MYSQL.USER, ГДЕ ИМЯ ПОЛЬЗОВАТЕЛЯ =? И ПАРОЛЬ = ПАРОЛЬ (?)

Если число> 0, тогда имя пользователя / пароль верны.

1 голос
/ 19 декабря 2008

Я думаю, что этот вопрос открыт для интерпретации. Большинство людей подскакивают и говорят: «Вы не можете», но если на самом деле вы спрашиваете: «Как использовать MySQL для аутентификации пользователя, но на самом деле не использовать базу данных?» тогда это совсем другая игра с мячом. Посмотрите на mod_auth_mysql , модуль Apache, который делает именно это. Если бы у нас было больше деталей о том, что именно вы пытались сделать, люди могли бы быть более откровенными.

0 голосов
/ 19 декабря 2008

Одним из возможных решений было бы разработать какую-то схему, в которой имя пользователя / пароль представляют собой пару ключей шифрования / дешифрования. Очевидно, что это было бы более осуществимо в мире назначенных имен пользователей, но такая политика позволила бы вам не обращаться к базе данных, если это является основной целью.

0 голосов
/ 19 декабря 2008

Короче говоря - невозможно, если идентификатор пользователя / пароль хранятся в базе данных.

Аутентификация в основном означает, что вы сравниваете ответ на запрос с известными значениями. Если у вас нет значений для сравнения, вы не можете аутентифицироваться.

0 голосов
/ 19 декабря 2008

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

Лучшее, что вы можете сделать, это, возможно, подключиться к БД только после того, как они войдут в систему. Как только они будут аутентифицированы, вы можете хранить некоторую форму информации о сеансе на диске, но это не лучшее решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...