Разработчикам необходим доступ на чтение ко всем базам данных, включая prod. Иногда проблема в том, что данные на Prod не соответствуют ожиданиям, и им нужно увидеть данные, которые вызывают проблему, потому что они не могут воспроизвести их на dev.
У разработчиков не должно быть прав на запись производственных данных или прав на создание объектов. Ничто не должно подталкивать к тому, что не является частью официального релиза. Слишком часто люди делают быстрое исправление в prod, которое либо не работает, из-за чего prod становится еще более испорченным или работает, но они забывают поместить код на серверы dev / QA / Staging и, что еще хуже, в исходный код. управляющий репозиторий и код перезаписывается примерно через месяц в следующем официальном выпуске.
Я предпочитаю, чтобы разработчики имели полные права QA для базы данных, потому что развертывание на другом сервере помогает им увидеть, есть ли какие-либо пробелы в их процессе развертывания (упс, забыл, что я изменил эту таблицу, чтобы сделать так, и тому подобное, и я забыл, что я сделал это изменение использование графического интерфейса, а не сценария в управлении исходным кодом, что является причиной любых структурных изменений в базе данных).
Если у вас есть новый клиент корпоративного типа, у которого будет собственный набор серверов, разрешения могут быть ослаблены перед началом работы. Это потому, что так много должно произойти, и те немногие люди, которые могут это сделать, будут задерживаться, а иногда даже должны брать отпуск. В частности, людям, импортирующим данные из другой системы, может быть предложено поместить их в prod перед запуском, если загрузка данных займет много времени. Эти люди, как правило, являются специалистами по данным, и уровень временного доступа к продукту выше, чем у среднего разработчика приложений. Это не роскошь, которую вы имеете при переходе на уже работающий производственный сервер.
Одним из наиболее важных моментов ограничения рабочих прав на базу данных является то, что разработчикам необходимо убедиться, что их работа находится в форме, которую может развернуть кто-то другой. Это имеет тенденцию улучшать качество работы, потому что они не пытаются исправить на лету, потому что они забыли что-то или что-то не работает, потому что они сделали это иначе, чем в dev, когда полагались только на память. Вы также теряете те «упс, я удалил всю пользовательскую таблицу случайно, потому что я забыл выделить случайные ситуации типа« где », когда при развертывании prod используются только сценарии, которые запускаются как целая, а не одна команда за раз, как это обычно бывает при разработке запустить вещи на продукт. Команда с ограниченными правами на базы данных prod, скорее всего, также сохранит изменения базы данных в системе контроля версий.