Provisioning key database roles is not a secondary task. It is the spine of security, access control, and operational stability. Every connection, every query runs under a role. Every role defines what can be read, written, or destroyed.
Start with an inventory. Identify all roles in the database: administrator, developer, read-only, application service. Check what each role can do. Compare this to the principle of least privilege. If a role can drop a table but its function is only to read data, you have a problem.
Automate provisioning. Manual role assignment invites human error and drift. Use a script or migration file to define roles and permissions. Store these definitions in version control. Changes to database roles should be tracked like changes to code.
Enforce role separation. Never reuse admin credentials for application access. Give each service its own database role. Rotate sensitive keys on a schedule. Record who provisioned the role, when, and why.