PHP/Firebird 数据库 - 无需密码即可连接到 DSN
PHP/Firebird DB - Connecting to DSN with no password
一位朋友在一家公司工作,该公司的软件供应商允许 ODBC/DSN 连接但拒绝提供用户名和密码。
是否可以不用密码连接到 ODBC/DSN?我从来没有这样做过,所以我不确定该告诉他什么。我看过的所有示例,连接 PHP,显示用户名和密码。
当自动检测到当前 Windows(Linux 等)用户建立连接时,Firebird 有所谓的 "Trusted Authentication"。
- https://www.firebirdsql.org/manual/qsg2-config.html
- https://www.firebirdsql.org/file/documentation/reference_manuals/fblangref25-en/html/fblangref25-security-auth.html
- https://github.com/FirebirdSQL/firebird/blob/master/doc/README.trusted_authentication
然而,这不是最常用的方案,并且在跟踪器上有很多关于它的错误报告。
此外,可以使用 Firebird Embedded,它的工作方式类似于 SQLite,不是一个单独的进程,而只是您的程序用来读取数据库文件的 DLL/SO 库。在这种情况下也不需要身份验证。
所以,总而言之:
- 是的,理论上可以将 Firebird 服务器切换到受信任的身份验证,不需要明确的用户名和密码,您的情况可能就是其中之一。
- 是的,有些应用程序对嵌入式库非常满意,而不是功能齐全的独立 Firebird SQL 服务器,而且该模式根本没有身份验证。
但这些选项都不是主流。对于典型连接,用户名和密码必须明确提供给服务器。这是另一个问题,他们将凭证存储在哪里,是谁提供的?是您的应用程序还是您的应用程序使用的某些库?
在 PHP 示例中,您看到 name/password 是由 PHP 代码明确提供的,这是编写应用程序的典型场景。但我不是很精通ODBC。在 ODBC 中是否可以将凭据记录到 DSN 属性中?这样应用程序就不必提供它们,让 ODBC 库从其设置中隐式传递它们?我相信 BDE 可以做到,您可以将 login/password 保存在 BDE 别名 属性 中,然后应用程序可以使用该别名而无需自行提供凭据。检查 ODBC 中的 DSN 属性,我想用户名和密码可能已经在那里输入了。
因此您的问题是否可以不使用密码连接到ODBC/DSN?没有明确的答案。 不可能完全没有任何密码就可以连接常规服务器,但是可以设置您的应用程序不会使用的环境明确输入密码,因为这些密码是之前在您的应用程序下方的 ODBC 级别中输入的。
PS。作为记录,Firebird 凭据也可以保存为环境变量,但那些只是 Firebird 命令行实用程序确认它们。 https://www.firebirdsql.org/manual/isql-environment-variables.html
一位朋友在一家公司工作,该公司的软件供应商允许 ODBC/DSN 连接但拒绝提供用户名和密码。
是否可以不用密码连接到 ODBC/DSN?我从来没有这样做过,所以我不确定该告诉他什么。我看过的所有示例,连接 PHP,显示用户名和密码。
当自动检测到当前 Windows(Linux 等)用户建立连接时,Firebird 有所谓的 "Trusted Authentication"。
- https://www.firebirdsql.org/manual/qsg2-config.html
- https://www.firebirdsql.org/file/documentation/reference_manuals/fblangref25-en/html/fblangref25-security-auth.html
- https://github.com/FirebirdSQL/firebird/blob/master/doc/README.trusted_authentication
然而,这不是最常用的方案,并且在跟踪器上有很多关于它的错误报告。
此外,可以使用 Firebird Embedded,它的工作方式类似于 SQLite,不是一个单独的进程,而只是您的程序用来读取数据库文件的 DLL/SO 库。在这种情况下也不需要身份验证。
所以,总而言之:
- 是的,理论上可以将 Firebird 服务器切换到受信任的身份验证,不需要明确的用户名和密码,您的情况可能就是其中之一。
- 是的,有些应用程序对嵌入式库非常满意,而不是功能齐全的独立 Firebird SQL 服务器,而且该模式根本没有身份验证。
但这些选项都不是主流。对于典型连接,用户名和密码必须明确提供给服务器。这是另一个问题,他们将凭证存储在哪里,是谁提供的?是您的应用程序还是您的应用程序使用的某些库?
在 PHP 示例中,您看到 name/password 是由 PHP 代码明确提供的,这是编写应用程序的典型场景。但我不是很精通ODBC。在 ODBC 中是否可以将凭据记录到 DSN 属性中?这样应用程序就不必提供它们,让 ODBC 库从其设置中隐式传递它们?我相信 BDE 可以做到,您可以将 login/password 保存在 BDE 别名 属性 中,然后应用程序可以使用该别名而无需自行提供凭据。检查 ODBC 中的 DSN 属性,我想用户名和密码可能已经在那里输入了。
因此您的问题是否可以不使用密码连接到ODBC/DSN?没有明确的答案。 不可能完全没有任何密码就可以连接常规服务器,但是可以设置您的应用程序不会使用的环境明确输入密码,因为这些密码是之前在您的应用程序下方的 ODBC 级别中输入的。
PS。作为记录,Firebird 凭据也可以保存为环境变量,但那些只是 Firebird 命令行实用程序确认它们。 https://www.firebirdsql.org/manual/isql-environment-variables.html