Я не согласен с Биллом, и мышление Атомикса более подходящее. Если это не продемонстрировано иначе, ответ Билла сильно увеличивает риск взлома базы данных.
Возможно, для очень опытных разработчиков существует другая система безопасности, но для других разработчиков, предоставляющих полный, беспрепятственный доступ сценарию для выполнения ~ любых операций с базой данных, возникает проблема, когда в этом нет необходимости.
Здесь должен использоваться принцип наименьших привилегий. Для MySQL есть суперпользователь со всеми привилегиями, который используется для создания таблиц, удаления базы данных и так далее. В идеале это имя пользователя и пароль никогда не встречаются ни в одном файле PHP или в любом файле на веб-сервере. (Я использую PHP в качестве примера, но это относится к другим веб-приложениям). Вы можете использовать это имя пользователя и пароль только с PHPMyAdmin или MySQL Workbench.
Тогда для сценариев PHP выберите один с необходимым минимумом, например, просто INSERT, SELECT, UPDATE, возможно, даже не DELETE, в зависимости от сценария PHP. Это будет в файлах PHP, то есть, фактически, ОДИН файл вне корня документа, как рекомендуется большинством.
Причина такова: да, вам не нужен пользователь MySQL для каждого пользователя веб-приложения. Но принцип наименьших привилегий (http://en.wikipedia.org/wiki/Principle_of_least_privilege) должен применяться. Если каким-то образом ваш суперпользователь MySQL скомпрометирован, потому что вы случайно назвали свой скрипт подключения MySQL как .txt вместо .php, или кто-то получил доступ к файлам веб-сервера, по крайней мере, «худшее», что они могут сделать, это SELECT, UPDATE и INSERT. .. Который в любом случае может вызвать большие проблемы, это не так плохо, как дать им DROP DATABASE, DROP TABLES и многое другое.
Кроме того, в моем текущем проекте из-за практики гибкой разработки (я не работаю на, но рекомендую http://www.agilealliance.org/), один или два «нетехнических» члена команды напрямую используют PHPMyAdmin для прямого изменения базы данных MySQL). Это потому, что создание CMS для простого прямого ввода данных не требуется. В этом случае для них подходит третий пользователь MySQL с разумными, но опять-таки «достаточными» привилегиями. Мы не хотим калечить члена команды слишком мало привилегий, но, конечно, они не смогут случайно удалить или изменить вещи.
Поскольку в MySQL отсутствуют ROLES (на момент, когда был задан исходный вопрос, и согласно законопроекту), разрешить любому веб-сценарию доступ к MySQL только с одним суперпользователем очень рискованно.