 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
ikis Master


Registrado: 28 Dic 2002Mensajes: 703Ubicación: Madrid, España
|
Publicado: Sab 07 Feb, 2004 2:50 pm Asunto: crear usuarios dinamicamente |
|
|
| Hola, alguien sabe como crear por código usando IBO + Firebird 1.5 usuarios de la base de datos? |
|
| Volver arriba |
|
 |
XyVy Master


Registrado: 25 Ago 2002Mensajes: 557Ubicación: Murcia (España)
|
Publicado: Sab 07 Feb, 2004 6:59 pm Asunto: |
|
|
Hola IKIS he estado buscando en internet si hay posibilidad de crear usuarios en tiempos de ejecución con sentencias SQL y por ahora no se puede hacer, hay un FEATURE REQUEST sobre la versión 1.5, pero no lo he probado en casa, ahora mismo estoy en la tienda de un amigo y aquí solo usamos Firebird 1.0.3.
Cuando llegue a casa lo probaré sobre la 1.5 a ver que me dice, imagino que podrás crearlos pero ya no con sentencias SQL, sino que tendrás que programarte el acceso a las tablas del sistema, o bien usar el Administrador para crear los usuarios, y luego ya con sentencias SQL conceder privilegios como quieras, eso logicamente si que se puede hacer.
Ciao. _________________ OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins. |
|
| Volver arriba |
|
 |
ikis Master


Registrado: 28 Dic 2002Mensajes: 703Ubicación: Madrid, España
|
Publicado: Sab 07 Feb, 2004 7:05 pm Asunto: |
|
|
esa es la idea, claro que un Administrador puedo, pero la idea es automatizarlo desde el sistema, de modo de no tener que tocar la base.
Gracias por la respuesta |
|
| Volver arriba |
|
 |
XyVy Master


Registrado: 25 Ago 2002Mensajes: 557Ubicación: Murcia (España)
|
Publicado: Sab 07 Feb, 2004 7:14 pm Asunto: |
|
|
Esperemos que incluyan pronto esa sentencia como parte del SQL de Firebird, puede ser muy util, si se usa bien claro!
Imagino que deberán introducir algunas carácteristicas de privilegios para ver quien puede o no puede generar usuarios, y quien puede conceder o no privilegios para generar esas usuarios.
Ciao y suerte, ikis! _________________ OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins. |
|
| Volver arriba |
|
 |
ikis Master


Registrado: 28 Dic 2002Mensajes: 703Ubicación: Madrid, España
|
Publicado: Sab 07 Feb, 2004 8:27 pm Asunto: |
|
|
| XyVy escribió: | hay un FEATURE REQUEST sobre la versión 1.5, pero no lo he probado en casa, ahora mismo estoy en la tienda de un amigo y aquí solo usamos Firebird 1.0.3.
|
¿Entonces si uso Firebird 1.5 tengo que poder crear usuarios dinámicamente? ¿Tienes más info al respecto? |
|
| Volver arriba |
|
 |
XyVy Master


Registrado: 25 Ago 2002Mensajes: 557Ubicación: Murcia (España)
|
Publicado: Sab 07 Feb, 2004 8:45 pm Asunto: |
|
|
Mira busca en las listas Knowledge de Firebird tienes varias, por ejemplo en esta contestan diciendo que se use el API, hay algunos componentes que si te lo permiten pues usan el API.
http://www.ibphoenix.com/main.nfs?a=ibphoenix&d=fbsupp&q=%2BCREATE+%2BUSER
Aun así creo que no está soportada, si te lees el PDF, Release Notes en castellano 1.07 de la versión de Firebird 1.5, en ningun momento se habla de estas nuevas características, o yo no las recuerdo cuando se tradujo el documento, te pongo el enlace es muy util pues habla de todas las nuevas caracteristicas y cambios con respecto a la versión anterior, recordemos que esta nueva versión representa un gran salto con respecto a la versión anterior.
http://www.ibphoenix.com/downloads/Firebird_v15.107_ReleaseNotesSpanish.pdf
Imagino que o bien en una modificación posterior, o ya para la 2, aun así es bueno saber que estamos aun en un RC8 aunque claro es casi la estable, así que no creo que lo metan en esta versión concretamente.
Ciao. _________________ OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins. |
|
| Volver arriba |
|
 |
XyVy Master


Registrado: 25 Ago 2002Mensajes: 557Ubicación: Murcia (España)
|
Publicado: Sab 07 Feb, 2004 8:49 pm Asunto: |
|
|
Ikis acabo de encontrar en la web de Ivan Prenosil, un documento que te puede ayudar, consistiria en modificar las tablas del sistema como si se tratar de otra BD, leetelo lo mismo puede sacar algo en claro. Ciao.
http://www.volny.cz/iprenosil/interbase/ip_ib_isc4.htm
Incluso hay una nota para usuarios de Firebird 1.5.
Acabo de incluirla como SYSDBA en IBConsole, he abierto la tabla de USERS y aparecian los usuarios del sistema, así que imagino que por ahí te escapas, el unico problema imagino, será generar una clave valida, imagino que tendrás que llamar a alguna función UDF que será parte del sistema para que te encripte la clave, mira a ver si das con ella, sino te lo miro mañana en cuanto tenga un rato.
Ciao. _________________ OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins.
Ultima edición por XyVy el Sab 07 Feb, 2004 8:53 pm, editado 1 vez |
|
| Volver arriba |
|
 |
ikis Master


Registrado: 28 Dic 2002Mensajes: 703Ubicación: Madrid, España
|
Publicado: Sab 07 Feb, 2004 8:53 pm Asunto: |
|
|
| XyVy, gracias por la info! Luego te cuento como me ha ido. |
|
| Volver arriba |
|
 |
ikis Master


Registrado: 28 Dic 2002Mensajes: 703Ubicación: Madrid, España
|
Publicado: Sab 07 Feb, 2004 10:42 pm Asunto: |
|
|
XyVy, no encuentro la tabla "Users" a la que haces referencia. En cambio si vi que en mi base tengo como tabla de Sistema
RDB$USER_PRIVILEGES
donde aparecían los usuarios definidos. |
|
| Volver arriba |
|
 |
XyVy Master


Registrado: 25 Ago 2002Mensajes: 557Ubicación: Murcia (España)
|
Publicado: Dom 08 Feb, 2004 1:25 am Asunto: |
|
|
Pero no es lo mismo Ikis esa tabla que dices es parte de cualquier base de datos, y habla sobre los privilegios de los usuarios sobre las tablas de la base de datos en cuestión.
Lo que debes hacer es cargar la base de datos isc4.gdb, se haya donde tengas instalado Firebird, prueba a abrirla en IBOConsole o algun administrador firebird, esa es la tabla con datos del sistema, tiene dos tablas una llamada HOST_INFO y otra llamada USERS, pues bien en la de USERS tienes los usuarios dados de alta en Firebird, solo deberías insertar tuplas para insertar usuarios como si se tratará de una tabla normal y corriente, la única pega es que solo tiene acceso el SYSDBA y lo segundo es que el campo clave esta cifrado, luego te hace falta saber que función udf es la que tienes que usar para generar las claves a introducir, aquí te pongo toda la definición de esa tabla:
| Código: |
/* Domain definitions */
CREATE DOMAIN COMMENT AS BLOB SUB_TYPE TEXT SEGMENT SIZE 80 CHARACTER SET UNICODE_FSS;
CREATE DOMAIN GID AS INTEGER;
CREATE DOMAIN NAME_PART AS VARCHAR(96) CHARACTER SET UNICODE_FSS
DEFAULT _UNICODE_FSS '';
CREATE DOMAIN PASSWD AS VARCHAR(32) CHARACTER SET OCTETS;
CREATE DOMAIN PRIVILEGE AS INTEGER;
CREATE DOMAIN UID AS INTEGER;
CREATE DOMAIN USER_NAME AS VARCHAR(128) CHARACTER SET ASCII;
/* Table: USERS, Owner: SYSDBA */
CREATE TABLE USERS
(
USER_NAME USER_NAME ,
SYS_USER_NAME USER_NAME ,
GROUP_NAME USER_NAME ,
UID UID ,
GID GID ,
PASSWD PASSWD ,
PRIVILEGE PRIVILEGE ,
COMMENT COMMENT ,
FIRST_NAME NAME_PART DEFAULT _UNICODE_FSS '',
MIDDLE_NAME NAME_PART DEFAULT _UNICODE_FSS '',
LAST_NAME NAME_PART DEFAULT _UNICODE_FSS '',
FULL_NAME COMPUTED BY (first_name || _UNICODE_FSS ' ' || middle_name || _UNICODE_FSS ' ' || last_name )
);
/* Index definitions for USERS */
CREATE UNIQUE INDEX USER_NAME_INDEX ON USERS(USER_NAME);
|
Como ves se crean dominios y luego se usan en la tabla, como ves PASSWD es del tipo Varchar(32), lo único que te hace falta repito es la función que debes utilizar para encriptar la clave antes de almacenarla, hoy ya es un poco tarde acabo de llegar y me voy a sobar, si no has dado con ella, intentaré verte algo, aunque quizás hasta la noche no pare por casa.
Ciao y suerte. _________________ OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins. |
|
| Volver arriba |
|
 |
XyVy Master


Registrado: 25 Ago 2002Mensajes: 557Ubicación: Murcia (España)
|
Publicado: Dom 08 Feb, 2004 2:04 am Asunto: |
|
|
Ikis imagino que ibamos encaminados, pero creo que se puede hacer simplemente llamando a gsec.exe que es el encargado de los temas de seguridad, le pasas los parametros del usuario a crear y a correr!!
Ya hemos dado con el blanco!! Mira lo que aparece en la documentación Operation Guide de Interbase.
| Cita: |
The SYSDBA account can create other users on a per-server basis. Use gsec or IBConsole to create, modify, or remove users from the isc4.gdb security database. |
Más datos:
| Cita: |
Column Required Description
------------------------------------------------------------------------------
User name Yes The name that the user supplies when logging in; maximum length is 31 characters
Password Yes The user’s password
• Case sensitive
• Only the first eight characters are significant
• Maximum length: 32 characters.
UID No An integer that specifies a user ID
GID No An integer that specifies a group ID
Full name No User’s real name (as opposed to login name)
|
Te sugiero que te vayas a la página 58 del citado PDF, allí encontrarás los parametros con los que debes correr gsec, para poder crear usuarios.
Por ejemplo para añadir el usuario juan con clave miclave es algo así como:
gsec -add juan -pw pedro
pero primero debes identificarte como SYSDBA y la clave de superusuario, es decir, quedaría algo así:
gsec -user sysdba -password masterkey -add juan -pw pedro
Suponiendo que masterkey sigue siendo la clave del administrador.
En fín lo he probado y funciona, en linea de comandos, ahora lo unico que debes hacer es irte al registro, ver donde tienes instalado firebird y ejecutar esa linea, también lo puedes hacer desde los propios clientes, así que va sobre ruedas!!
Tras hacer todo esto ya podemos tirar del SQL para conceder todos los privilegios que queramos, ya sea creando ROLES o bien directamente!
Suerte! _________________ OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins. |
|
| Volver arriba |
|
 |
ikis Master


Registrado: 28 Dic 2002Mensajes: 703Ubicación: Madrid, España
|
Publicado: Dom 08 Feb, 2004 3:27 pm Asunto: |
|
|
Buenisimo lo tuyo XyVy, ahora tengo una solución completa. El único detalle es que en Firebird 1.5 el archivo de seguridad que mencionas isc4.gdb ahora se llama security.fdb
atte _________________ Adrián
http://adrian.org.ar |
|
| Volver arriba |
|
 |
XyVy Master


Registrado: 25 Ago 2002Mensajes: 557Ubicación: Murcia (España)
|
Publicado: Dom 08 Feb, 2004 11:04 pm Asunto: |
|
|
Sí lo ví que lo ponía en la web de Ivan pero no te lo puse, gracias de todos modos por el apunte, a ver si se deciden a meter en breve el CREATE USER que me parece una manera más sensata y segura de hacer las cosas.
En fin, entre todos vamos mejorando, a ver si sale ya por fín la versión final de Firebird 1.5 y me decido a cambiar definitivamente a ella.
Ciao. _________________ OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins. |
|
| Volver arriba |
|
 |
ikis Master


Registrado: 28 Dic 2002Mensajes: 703Ubicación: Madrid, España
|
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|