Здравствуйте, многоуважаемые! Исходные данные: 1. Есть форма для регистрации юзера на сервере, состоящая, как водится, из логина и пароля 2. Есть БД (Mysql) 3. Есть понятное желание сохранять данные, пользователя по его выбору, в куках(?) Прочитал кучу статей - все советы сводятся к тому чтобы хэшировать пароль и в куках хранить хэш, а затем хэш из куков сравнивать с хэшем в БД. НО при этом каждый юзер заходит и работает под одним и тем же логином и паролем (хотя бы даже для того чтобы вытащить хэш из базы). То есть я все правильно понимаю? У меня на серваке 100 000 пользователей и все работают под одним и тем же логином БД?
зависит от архитектуры ресурса. не принято делать на каждого пользователя сайта свой аккаунт для MySQL. тем более, что вы должны понимать, что пользователи работают не с mysql-аккаунтом, а с аккаунтом вашего сайта. а вот ваш сайт работает с mysql-аккаунтом. это вполне обычно. не забивайте себе голову.
Извиняюсь за сбивчивость... 1. Есть MySql, в которой есть БД mysql, в которой есть, как водится, таблица user, которая хранит данные о всех пользователей всех БД данного сервера mysql 2. Есть некая БД, назовем ее test_db, в которой есть пользователи (ну хотя бы админ, управляющий только этой базой)-эти пользователи зарегистрированы в СУБД mysql, конкретнее в таблице user базы mysql 3. Существует некий сайт, который обращается к БД test_db. На этот сайт могут заходить разные люди, их может быть очень много... Так вот насколько я понял из прочитанных мной статей, структура БД подразумевает создание всего ОДНОГО пользователя БД mysql (данные которого будут соответственно хранится в таблице user), а в рабочей БД (test_db) должна быть создана спец таблица, в которой будут хранится данные пользователей, регистрирующихся на данном сайте. Я и хочу понять - у всех так? или я чего-то не понимаю?
пока писал сообщение - уже практически ответили А если речь идет о выделенных серверах, то есть БД заточена ТОЛЬКО под конкретный проект?
1 проект может использовать <= бесконечное число БД 1 база может снабжать <= 1 проект если одна БД используется для 2 и более проектов из цели экономии на хостинге, то это очень плохо. исключения уместны
виноват - выделенные сервера соответственно выделенный сервер mysql кстати, да, на сервере могут использоваться под один проект и несколько БД Если взять гипертрофированный пример - например facebook - то там пользователь когда регистрируется в facebook - он одновременно регистрируется и как пользователь БД или там тоже один аккаунт БД на всех? и для каждого некий ключ в таблице?
facebook я взял просто как гипертрофированный пример, но интересен сам принцип работы с БД в приложениях такого уровня. Может кто-нить сталкивался?
В моём php-приложении для каждого аккаунта создаётся MySQL-пользователь. И при подключении к MySQL создаётся два подключения: $conn (от имени MySQl-пользователя, соотв. аккаунту) и $conn_admin (с полными возможностями). Делается это, конечно, для дополнительной страховки от взлома.
как показала практика, помогает это только от sql-инжекта, да и то не всегда, поскольку ограничение пользователя на селект не по таблицам, а по конкретным полям таблицы появилась только в поздних версиях MySQL. если у меня есть возможность посмотреть мою личную переписку (mysql-аккаунт позволяет), к примеру, то наверняка у меня есть и возможность с этими же правами получить информацию обо всех остальных записях по тому же полю, а значит я могу вынуть и чужую переписку. то же самое и с настройками и еще невесть чем. поэтому не думаю, что ваш подход верный. у меня в системе архитектурой предусмотрено использование своего mysql-аккаунта на каждый модуль со своими правами. но и этим я пока что не пользуюсь - нет времени прикрутить всё как положено.
А разве этого мало? У меня столько форм и столько взаимодействий с БД, что где-нибудь да фраернусь (особенно при срочной работе). А мне хватит разграничения по базам. У меня на каждый офис своя база. И боюсь я не какого-то гипотетического хакера со стороны - а директора периферийного офиса с тамошним сисадмином - которые хотели бы прознать, что делается в головном офисе. На инжекте и будут меня ловить...