У будь-якій системі реального масштабу (тобто не особистого проекту) ці типи користувачів залежать від середовища, тому це не так просто.
У всіх середовищах програма повинна мати те, що їй потрібно, і не більше (як правило, це "вибрати / вставити / оновити на всіх таблицях" та "виконати всі процедури". Для великих систем, де у вас можуть бути окремі користувачі додатків для різних завдань (для наприклад, одна програма несе відповідальність за подачу даних про цензуру, а інша - за генерування звітів. Ви повинні розділити їхні привілеї, щоб вони мали найменше, що їм потрібно (користувачеві-звітнику, мабуть, не потрібно і права запису). середовища, якщо у вас є: Я бачив, як код підпадає під час просування до Live, який працював у тесті, оскільки все в тестовому середовищі отримувало доступ до БД як sa
(еквівалент MSSQL root
).В ідеалі користувач програми, як правило, не повинен мати привілеїв, які дозволяють йому змінювати вашу схему (CREATE
,, DROP
...) - з цього є винятки, але їх небагато і між ними.
root
є, ну root
,. У виробництві це лише ваша DBA, і її слід використовувати рідко - лише для обслуговування системи (оновлення дизайну БД тощо) та моніторингу. Для великої системи, особливо в регламентованих умовах, де ви повинні підтримувати ретельний контроль над особами з метою підзвітності, ви можете взагалі не дозволити одному root
користувачеві і спробувати розділити привілеї на менші рулони (я не впевнений, наскільки далеко ви можете піти з цим у mysql, але ви можете бути досить дрібними в MSSQL, Oracle тощо.
Для користувачів розробників: вони взагалі не повинні мати доступу до вашої живої обстановки. Це одна з причин, чому користувачі програм не повинні мати схеми, що впливає на права: хтось із доступом до облікового запису розробника може потенційно обійти їх блокування. У тестових середовищах вони зазвичай не мають доступу: вони надсилають патчі до QA і DBA (можливо, користуючись root
користувачем) для QA застосовують оновлення до тестового середовища (насправді це часто автоматизовано у великих організаціях, тому QA DBA насправді є набором скриптів, який контролює відновлення тестового середовища для кожного циклу). У середовищі розробки, особливо якщо у розробників є свої локальні копії запущеної служби, ці користувачі, звичайно, повинні мати повний доступ до всього, щоб мати можливість експериментувати.
Наведене вище - це загальні зауваження: щоб зробити будь-які конкретні рекомендації, нам слід знати набагато більше про ваші додатки та умови, в яких вони працюють. Цільове середовище іноді важливіше, ніж ви можете подумати: залежно від вашого бізнес-середовища. права ваших користувачів навіть можуть бути продиктовані досить безпосередньо законодавчим регулюванням, навіть якщо ваші клієнти коли-небудь надають вам доступ до реальних даних для діагностичних цілей.