En Firebird solamente pueden conectarse a una Base de Datos y realizar operaciones en esa Base de Datos (insertar/borrar/modificar/consultar) las personas a quienes específicamente se les permite hacerlo. Si a una persona no se le otorgó el derecho de conectarse, no podrá conectarse. La forma de determinar quien puede y quien no puede conectarse a una Base de Datos es a través de dos parámetros:
- Nombre del usuario
- Contraseña del usuario
Para agregar, borrar, modificar y listar los usuarios se puede hacer de dos formas: usando el programa GSEC.EXE o sin usar el programa GSEC.EXE
Usando el programa GSEC.EXE
El programa GSEC.EXE se encuentra en la subcarpeta \BIN\ de la carpeta donde instalaste el Firebird, por ejemplo en la carpeta C:\ARCHIVOS DE PROGRAMA\FIREBIRD\FIREBIRD_2_5\BIN\
Debes abrir la ventana «Símbolo del sistema» y luego ubicarte en la subcarpeta \BIN\ escribiendo allí GSEC, tal como se ve en esta captura de pantalla:
Captura 1. Si haces clic en la imagen la verás más grande
Para agregar un nuevo usuario, debes escribir la palabra ADD, el nombre del usuario que deseas agregar y su contraseña, por ejemplo para agregarla a ‘FATIMA’ con contraseña ‘123456’, escribirías:
Captura 2. Si haces clic en la imagen la verás más grande
Si deseas ver los nombres de todos los usuarios habilitados lo puedes hacer con el comando DISPLAY, tal como se ve aquí.
Captura 3. Si haces clic en la imagen la verás más grande
Como puedes ver, hay solamente dos usuarios habilitados: SYSDBA y FATIMA. El usuario SYSDBA siempre existe, puedes cambiar su contraseña si lo deseas pero no su nombre.
Para cambiar la contraseña de un usuario usas el comando MODIFY:
Captura 4. Si haces clic en la imagen la verás más grande
Aquí, se cambió la contraseña de FATIMA, desde este momento su contraseña es BONITA, la contraseña que tenía anteriormente ya no puede ser usada. A partir de este momento para conectarse a la Base de Datos deberá hacerlo con nombre = FATIMA y con contraseña = BONITA
Para borrar a un usuario:
Si por algún motivo deseas borrar (eliminar) a un usuario para que nunca más pueda conectarse a la Base de Datos, entonces en el programa GSEC.EXE debes escribir la palabra DEL y a continuación el nombre del usuario que deseas borrar, como puedes ver en la siguiente captura de pantalla:
Captura 5. Si haces clic en la imagen la verás más grande
Al eliminar a un usuario se impide que pueda conectarse a la Base de Datos. En este ejemplo a FATIMA se la eliminó de la lista de usuarios habilitados y por lo tanto ya no podrá conectarse a la Base de Datos con ese nombre.
Agregando usuarios sin usar GSEC.EXE
Lo bueno o malo de agregar usuarios con el programa GSEC.EXE (dependiendo del punto de vista y de las circunstancias) es que dichos usuarios podrán conectarse a cualquier Base de Datos. Esto puede ser malo cuando se tienen varias bases de datos en una computadora y no se quiere o necesita que algunos usuarios se conecten a algunas de ellas.
Desde Firebird 2.5 hay una forma de establecer que un usuario se conecte solamente a la Base de Datos en la cual se lo agregó. Para que pueda conectarse a dos (o más) bases de datos entonces habrá que agregarlo individualmente a esas dos (o más) bases de datos. El usuario que puede agregar nuevos usuarios es SYSDBA o cualquier otro usuario que tenga el rol RDB$ADMIN. La forma de hacerlo es la siguiente:
1. Te conectas a la Base de Datos como SYSDBA o como un usuario que tiene el rol RDB$ADMIN
2. Escribes el comando:
CREATE USER NombreUsuario PASSWORD ‘Contraseña’ [FIRSTNAME ‘PrimerNombre’] [MIDDLENAME ‘SegundoNombre’] [LASTNAME ‘Apellido’];
Ejemplos:
CREATE USER Fatima PASSWORD ‘123123’;
CREATE USER MKenny PASSWORD ‘MMK12345’ FIRSTNAME ‘Maria’ MIDDLENAME ‘Marcela’ LASTNAME ‘Kenny’;
Para cambiar los datos de un usuario:
ALTER USER NombreUsuario [SET] [PASSWORD ‘Contraseña’] [FIRSTNAME ‘PrimerNombre’] [MIDDLENAME ‘SegundoNombre’] [LASTNAME ‘Apellido’];
Al menos uno de PASSWORD / FIRSTNAME / MIDDLENAME / LASTNAME es requerido cuando se usa ALTER USER
Ejemplo:
ALTER USER Fatima SET PASSWORD ‘Walter’;
El usuario SYSDBA puede modificar los datos de cualquier usuario. Los demás usuarios solamente pueden cambiar sus propios datos.
Para borrar los datos de un usuario:
DROP USER NombreUsuario;
Ejemplo:
DROP USER MKenny;
IMPORTANTE: No puedes utilizar ni vocales acentuadas ni eñes, esos caracteres no están permitidos.
Artículos relacionados:
Entendiendo los derechos de acceso | Firebird SQL
May 29, 2013 @ 14:30:18
El índice del blog Firebird21 | Firebird SQL
Jun 16, 2013 @ 20:42:09
Delegando el otorgamiento de derechos | Firebird SQL
Sep 07, 2013 @ 13:07:44
Osmar Mitjans
Dic 02, 2013 @ 23:39:58
Hola, ya he intentado, pero no me funciona
ALTER USER NombreUsuario [SET] [PASSWORD ‘Contraseña’]
El NombreUsuario, debe ser una variable y no me acepta, debo ingresarlo esta manera Ej. :NombreUsuario o asi ?NombreUsuario, no me reconoce, que estoy haciendo mal?
wrov
Dic 02, 2013 @ 23:57:43
Debes formar una cadena donde la contraseña esté rodeada por apóstrofos. Es requisito que la contraseña esté rodeada por apóstrofos. Y no puede tener espacios en blanco.
Ejemplo:
lcPassword = «123456»
lcComando = «ALTER USER SILVIA SET PASSWORD » + [‘] + lcPassword + [‘]
=SQL_EXEC(gnHandle, lcComando)
Saludos.
Walter.
Osmar Mitjans
Dic 03, 2013 @ 10:16:19
Hola Walter, desde ya te agradezco las respuestas,
pero el user SILVIA por ej, debe tambien ser una variable para que funcione
o me estoy perdiendo algo, perdon por mi nivel, asi como me mostras si funciona, pero solo para el usuario SILVIA, nose si me explico.
gracias
wrov
Dic 03, 2013 @ 13:00:30
Puedes también muy fácilmente tener al usuario como una variable:
lcUsuario = «SILVIA»
lcPassword = «123456»
lcComando = «ALTER USER » + lcUsuario + » SET PASSWORD » + [‘] + lcPassword + [‘]
Saludos.
Walter.
Osmar Mitjans
Dic 03, 2013 @ 23:56:40
Hola Walter, estoy muy agradecido por las respuestas, funcionan a la perfeccion,
Gracias
Osmar
flako
Ene 18, 2014 @ 13:52:58
disculpa tengo una duda…
es posible que pueda listar mis usuarios sin usar gsec.exe ya que necesito llenar un combobox con todos los nombres pero necesito el query para llenarlo o tendrás alguna sugerencia?
Gracias de Antemano
wrov
Ene 18, 2014 @ 16:17:42
No conozco algún SELECT que te devuelva los nombres de los usuarios. Esos nombres se guardan en el archivo SECURITY2.FDB y el acceso a ese archivo está restringido, por obvias razones.
Sin embargo lo que puedes hacer es redirigir la salida del comando GSEC.EXE a un archivo de texto y luego extraes de allí los nombres de los usuarios:
Saludos.
Walter.
flako
Ene 18, 2014 @ 17:31:58
Gracias por tu tiempo amigo… tienes mucha experiencia con firebird me ayudaste bastante
Gracias
wrov
Ene 18, 2014 @ 17:55:29
Ya escribí un nuevo artículo, mostrando como se pueden obtener los nombres de los usuarios, lo publicaré mañana a primera hora.
Saludos.
Walter.
Luis Carrillo (@LuisGerita)
Feb 11, 2015 @ 17:09:24
Walter por una extraña razon, cuando el usuario es numerico, al usar el comando en VFP tal como lo sugieres:
lcUsuario = “12345”
lcPassword = “password”
lcComando = “ALTER USER ” + lcUsuario + ” SET PASSWORD ” + [‘] + lcPassword + [‘]
no cambia el password.
Alguna sugerencia?
wrov
Oct 29, 2020 @ 00:06:49
En Firebird los nombres de los usuarios no pueden empezar con un número, siempre deben empezar con una letra.
Saludos.
Walter.
jesus
Ago 18, 2016 @ 21:36:48
buenas tardes, disculpa ya cree un usuario como admin, mi pregunta es se puede dar a ese usuario el privilegio de lectura y escritura para las tablas de una bd.
wrov
Ago 19, 2016 @ 00:38:18
Sí, claro, para eso se usa el comando GRANT
Para quitarle derechos a un usuario se utiliza el comando REVOKE
Hay artículos en este blog que tratan esos temas.
Saludos.
Walter.
jesus
Ago 20, 2016 @ 13:55:58
PERO SERIA DAR PRIVILEGIOS TABLA POR TABLA O SE PUEDE A UNA BD EN GENERAL?. SALUDOS
wrov
Ago 20, 2016 @ 17:06:09
Lo ideal es que a los usuarios no les des privilegios sobre tablas individuales sino sobre vistas y stored procedures solamente.
De esa manera jamás podrán hacer algo que específicamente no les permitas hacer.
Siempre debes tener en cuenta que los usuarios son bobos. Y algunos ya son rematadamente bobos. Por error o por intención pueden «meter la pata» y dañar los datos.
Lo mejor y más inteligente es evitar que causen daños, por eso no hay que darles derechos sobre las tablas individuales.
En este blog hay varios artículos que tratan ese tema. Puedes encontrarlos en la categoría «DERECHOS DE ACCESO» del siguiente enlace:
https://firebird21.wordpress.com/category/indice-de-este-blog/
Para asignarle todos los derechos a un rol o a un usuario, puedes leer este artículo:
Saludos.
Walter.
Lorenzo
Abr 09, 2019 @ 18:15:15
hola, Me puedes ayudar sobre como puedo agregar mas campos a un usuario como dirección o teléfono por ejemplo?
wrov
Abr 10, 2019 @ 15:41:30
Esa tarea la realiza el comando GRANT.
Puedes leer este artículo:
Saludos.
Walter.
Lorenzo
May 18, 2019 @ 17:24:10
Disculpen una pregunta al querer editar un procedimiento almacenado no me muestra los valores de entrada ni de salida, sera por el nivel del ususario? aunque no creo porque otra base de datos los muestra correctamente y no encuentro cual sera el problema
wrov
May 18, 2019 @ 23:26:39
No entendí, ¿dónde no te los muestra, cómo es eso?
Lorenzo
May 21, 2019 @ 11:26:18
Tuve que cambiar a la versión 5.2 de Sql manager porque no me mostraba los returns y por ende no podía agregar al momento de editar el procedimiento
lorenzojesus
Oct 25, 2019 @ 21:20:08
buenas tardes, disculpen alguna idea de como agregar usuarios desde visual studio ya que no logro crear una cadena que los pueda crear, aclaro que ya tengo la conexion y si funciona.
wrov
Oct 27, 2019 @ 11:09:29
¿Has finalizado tu transacción con un COMMIT?
Si no finaliza con un COMMIT, no podrá funcionar.
Saludos.
Walter.
ejgtuc
Jun 13, 2020 @ 10:40:11
Hola Walter, desde vfp se puede crear usuarios en la base de datos?
wrov
Oct 29, 2020 @ 00:00:31
Sí, claro que se puede, ¿por qué no se podría?
Escribe algo como esto:
Desde luego que para que funcione, debes haberte conectado a la Base de Datos como usuario SYSDBA, o ser el creador de esa Base de Datos.
Saludos.
Walter.
lorenzojesus
Jun 16, 2022 @ 16:36:12
alguien sabe como agregar columnas a la tabla de usuario de firebir o como hacerle , para poder agregar mas detalles, como direccion, telefono, imagen, etc..