Pregunta

Con Informix puedo otorgar selección en una tabla como;

grant select on 'dba'.mytable to someuser as dba;

¿Cómo puedo realizar esto en todas las tablas de la base de datos?

¿Fue útil?

Solución

No existe una manera simple de hacerlo (ya sea en el estándar SQL o en Informix), pero generalmente no es necesario ya que ese privilegio específico normalmente se otorga por defecto. Sin embargo, me imagino que, de hecho, también desea realizar operaciones más generales y saber qué opciones hay.

Dependiendo de lo que pretenda hacer y de cómo haya configurado su sistema, puede lograr sus objetivos de varias maneras.

Fuerza bruta: respuesta directa a la pregunta

 SELECT 'GRANT SELECT ON "' || TRIM(owner) || '".' || TRIM(tabname) ||
        ' TO someuser AS dba;'
     FROM "informix".systables
     WHERE tabid >= 100;

Tome el resultado de esto y aliméntelo a un programa. Utilizo SQLCMD para el trabajo, sobre todo porque no genera resultados no deseados:

sqlcmd -d dbname -e "
 SELECT 'GRANT SELECT ON \"' || TRIM(owner) || '\".' || TRIM(tabname) ||
        ' TO someuser AS dba;'
     FROM "informix".systables
     WHERE tabid >= 100;" |
sqlcmd -d dbname -f -

Las barras invertidas adicionales son necesarias para evitar el shell. Las opciones ' -f - ' no son estrictamente necesarias, pero hacen explícito que el segundo SQLCMD leerá de la entrada estándar. Si usa DB-Access, debe preocuparse por la verborrea que genera, que es la razón por la que escribí SQLCMD en primer lugar.

Claramente, esta solución se puede programar y generalizar con bastante facilidad; solo debe tener cuidado con el uso de las comillas.

Uso de roles

Otra opción es crear un rol que tenga todos los permisos que desee y luego otorgar ese rol a los usuarios según sea necesario. La desventaja de esto es que su software necesita establecer el rol para que las personas que se conectan tengan ese privilegio. Una posibilidad es establecer la función de solo selección como la función predeterminada para cada usuario.

Uso de Server Studio Java Edition

SSJE tiene herramientas de administración de privilegios para simplificar esta tarea.

Uso de Open Admin Too también

OAT tiene herramientas para ayudar con la gestión de privilegios.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top