Never say never. There are cases where you want to connect with the ability to run arbitrary queries, for example to update a db schema at run-time or the like.
I think it would be more correct to say that applications should connect with the least privilege they need.
Diseñando la base de datos
El primer paso es siempre crear una base de datos, a menos que quiera utilizar una de terceras personas. Cuando una base de datos es creada, ésta es asignada a un propietario, el que ha ejecutado la sentencia de creación. Usualmente, sólo el propietario (o un superusuario) puede hacer cualquier cosa con los objetos en esa base de datos, y para permitir a otros usuarios que puedan utilizarla, debe concederles privilegios.
Las aplicaciones nunca deberían conectarse a la base de datos como su propietario o como superusuario, porque estos usuarios pueden ejecutar cualquier consulta a su antojo, por ejemplo, modificar el esquema (Ej., eliminar tablas) o borrar su contenido entero.
Puede crear distintos usuarios de la base de datos para cada aspecto de su aplicación con permisos muy limitados a los objetos. La mayoría de privilegios que son requeridos deberían ser solamente otorgados, y así evitar que el mismo usuario pueda interactuar con la base de datos en diferentes casos y usos. Esto significa que si los intrusos ganan acceso a su base de datos utilizando las credenciales de la aplicación, solamente afecta a los cambios que su aplicación permita.
Usted está encarecido a no implementar toda la lógica del negocio en la aplicación web (Ej., sus scripts), en su lugar hágalo en el esquema de la base de datos utilizando vistas, disparadores o reglas. Si el sistema evoluciona, se pensará en abrir nuevos puertos a la base de datos, y usted tendrá que re-implementar la lógica en cada base de datos del cliente por separado. Al respecto de lo antes citado, los disparadores pueden ser utilizados para manerjar campos transparentes y automáticamente, lo cual a menudo provee un vistazo al interior cuando hay problemas de depuración con su programa o con el sistema de seguimientos de transacciones de su aplicación.
