2010-11-24 94 views
13

Tengo una aplicación hecha con Delphi 2006 y Firebird 2.5. Para la conexión, use componentes Interbase de Delphi. Me establecerse en tiempo de diseño de un TIBDatabase con nombre de usuario, tc contraseña, y el trabajo bien, pero cuando quiero ejecutar la aplicación en otro PC (primera i instalar Firebird 2.5 en él), he recibido este error:Error de Firebird "nombre de usuario y contraseña no están definidos" con la aplicación Delphi

Statement failed, SQLSTATE = 28000 

Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

¿Qué es esto? ¿Cómo puedo resolver eso?

Respuesta

14

El mensaje indica claramente que el nombre de usuario y la contraseña que está utilizando para conectarse en el momento del diseño en su máquina de desarrollo no son válidos para el servidor de base de datos que está intentando conectar en la otra máquina (llamémosla producción) . De su mensaje parece que no es el mismo servidor al que se conecta en el momento del diseño.

Te sugiero que pruebes este problema con facilidad para poner la propiedad LoginPrompt en true en el componente TIBDatabase para que pueda pedir al usuario las credenciales adecuadas antes de conectarte. Podrá conectarse utilizando cualquier combinación válida de nombre de usuario/contraseña para ese servidor. Para estar seguro de la combinación son válidos, intente conectarse utilizando la herramienta de línea de comandos isql, por ejemplo, el comando

c:\test>isql test.fdb -u sysdba -p masterkey 

conectará a c: \ \ test.fdb prueba usando nombre de usuario y contraseña por defecto. (el directorio raíz de Firebird debe estar en la variable de entorno de ruta para que esto funcione)

Además, puede usar la herramienta de línea de comandos de gsec para ajustar la contraseña de este motor o puede proporcionar a los usuarios crear y cambiar contraseñas en ese máquina de producción antes de tratar de conectarse a ella.

En Windows, la contraseña predeterminada de sysdba de firebird es masterkey.

+4

+1 para "contraseña predeterminada de Firebird sysdba es la clave maestra". :) – RBA

+2

La longitud de la contraseña de Firebird está limitada a 8 caracteres ... así que masterke es suficiente para conectarte con Firebird. Este solía ser el caso en Interbase, pero no lo he intentado desde IB 6 – Nazar

+0

. Aquí hay una excelente [guía de inicio] (http://swinbrain.ict.swin.edu.au/wiki/Create_a_Firebird_Database). –

0

Este error se debe a que las credenciales para Firebird db simplemente no se almacenan en el archivo de base de datos. Se almacena en el archivo de configuración en el servidor de Firebird. Si copia el archivo DB y no la contraseña, tendrá una contraseña diferente.

En las máquinas de Ubuntu se puede averiguar la contraseña y nombre de usuario en el archivo, /etc/firebird/<version>/SYSDBA.password

Se verá algo como,

ISC_USER=sysdba 
ISC_PASSWORD="password" 

utilizar esas credenciales para conectarse al archivo de base de datos.

+0

Eso no es del todo correcto, la información de la cuenta del usuario, incluida la contraseña, se almacena dentro de la base de datos de seguridad (con más opciones como usar la autenticación del sistema operativo en versiones más recientes), pero no en un archivo de configuración. – mghie

+1

No entiendo su corrección, la contraseña en el archivo conf 'SYSDBA.password' es * ciertamente * lo que' isql' quiere. –

+0

Primero, no hay conexión con Ubuntu en la pregunta. En segundo lugar, es posible cambiar la contraseña de SYSDBA en una máquina Ubuntu sin cambiar el contenido de la contraseña SYSDBA, utilizando formas nativas de Firebird de modificar esa contraseña en lugar de la secuencia de comandos de administración. – mghie

1

En 'isql-fb' desde la terminal de linux y después de 'CONNECT' en la base de datos: - Lo resolví después de eliminar (soltar) y volver a crear el usuario 'SYSDBA'.

Observación: he tenido problemas con archivos y carpetas en el permiso '/ tmp/pájaro de fuego' y que necesitaba usar 'sudo' o raíz para abrir 'isql-fb'

Gracias.

+0

'DROP USUARIO 'SYSDBA';' 'CREAR USUARIO 'SYSDBA' PASSWORD 'masterkey';' 'ALTER USER 'SYSDBA' GRANT ADMIN ROLE;' – Wellington1993

Cuestiones relacionadas