В любой реальной системе (т.е. не в личном проекте) эти типы пользователей будут различаться в зависимости от среды, поэтому все не так просто.
Во всех средах приложение должно иметь то, что ему нужно, и не более (обычно это «выбрать / вставить / обновить для всех таблиц» и «exec для всех процедур». Для более крупных систем, где у вас могут быть отдельные пользователи приложения для разных задач (для Например, одно приложение отвечает за ввод данных цензуры, а другое - за создание отчетов. Вам следует разделить их привилегии, чтобы они имели наименьшее количество необходимых им прав (вероятно, пользователю отчетов не нужны права на запись). Убедитесь, что вы повторили это в своем тесте. среды, если они у вас есть: я видел падение кода при переходе в Live, который работал в тесте, потому что все в тестовой среде обращались к БД как sa
(MSSQL эквивалентно root
).В идеале пользователь приложения, как правило, не должен иметь привилегий, позволяющих ему изменять вашу схему (CREATE
, DROP
...) - есть исключения из этого правила, но их мало и далеко друг от друга.
root
, ну root
. В производственном процессе это только ваш администратор базы данных, и его следует использовать редко - только для обслуживания системы (обновление структуры БД и т. Д.) И мониторинга. Для большой системы, особенно в регулируемых средах, где вы должны держать под строгим контролем отдельных лиц в целях обеспечения подотчетности, вы можете вообще не допустить отдельного root
пользователя и попытаться разделить привилегии на более мелкие списки (я не уверен, насколько далеко вы можете зайти с этим в MySQL, но вы можете быть достаточно хорошо в MSSQL, Oracle и т. д.).
Для разработчиков: у них вообще не должно быть доступа к вашей среде. Это одна из причин, по которой у пользователей приложений не должно быть схемы, влияющей на права: кто-то, имеющий доступ к учетной записи разработчика, может потенциально обойти эту блокировку таким образом. В тестовых средах они также обычно не имеют доступа: они будут отправлять исправления в QA, а администратор базы данных (вероятно, использующий root
пользователя) для QA будет применять обновления в тестовой среде (на самом деле это часто автоматизируется в больших организациях, поэтому QA DBA на самом деле это набор скриптов, которые контролируют перестройку тестовой среды для каждого цикла). В средах разработки, особенно если разработчики имеют свои собственные локальные копии работающей службы, эти пользователи, конечно, должны иметь полный доступ ко всему, чтобы иметь возможность экспериментировать.
Выше приведены все общие замечания: чтобы дать какие-то конкретные рекомендации, нам нужно знать гораздо больше о ваших приложениях и средах, в которых они работают. Целевая среда иногда важнее, чем вы думаете: в зависимости от вашей бизнес-среды права ваших пользователей могут даже быть продиктованы правовыми нормами, даже в процессе разработки, если ваши клиенты когда-нибудь предоставят вам доступ к реальным данным в диагностических целях.