I believe that the tool to be used here is sudo.
If I may hazard a general statement here... I rather think that too many developers “routinely” have access to root. And they (so to speak) “lazily” write code that “merely assumes it.” They write code that does things as they would (can...) do it. And this quickly leads to trouble.
The “principle of least privilege” needs to apply to every privileged thing that you do. I happen to think that it is an excellent practice to dictate that no developer shall have access to root. If you impose that restriction upon them (also building the restriction that “developers have no way to reach the production databases, directories and files,” no matter how loudly they whine), that restriction becomes reflected in their code. Necessity is the mother of invention. Even a self-imposed version of that discipline is beneficial. This point-of-view needs to be something that is “in your blood.”