C# FirebirdSql.Data.FirebirdClient与Sysdba以外的用户连接-未定义用户名和密码
我使用FirebirdSql.Data.FirebirdClient连接到Firebird数据库(WPF桌面应用程序)C# FirebirdSql.Data.FirebirdClient与Sysdba以外的用户连接-未定义用户名和密码,c#,.net,firebird,firebird-3.0,firebird-.net-provider,C#,.net,Firebird,Firebird 3.0,Firebird .net Provider,我使用FirebirdSql.Data.FirebirdClient连接到Firebird数据库(WPF桌面应用程序) 服务器版本:WI-V3.0.5.33220 Firebird 3.0,ADO.net提供程序版本为7.5.0(NuGet) 我创建了一个除SYSDBA之外的用户,该用户只对表具有只读访问权限(仅选择)。与FlameRobin的连接对于这个新用户来说没有问题。但是,当我在FbConnectionStringBuilder类中指定这个新用户和相应的只读角色时,我得到一个 “您的用户
服务器版本:WI-V3.0.5.33220 Firebird 3.0,ADO.net提供程序版本为7.5.0(NuGet) 我创建了一个除SYSDBA之外的用户,该用户只对表具有只读访问权限(仅选择)。与FlameRobin的连接对于这个新用户来说没有问题。但是,当我在FbConnectionStringBuilder类中指定这个新用户和相应的只读角色时,我得到一个 “您的用户名和密码未定义” 错误。如果我用SYSDBA和相应的密码替换新用户,连接就会工作
using FirebirdSql.Data.FirebirdClient;
namespace Test
{
class DBConnection
{
FbConnection fbConnection;
public void CreateConnection()
{
FbConnectionStringBuilder builder = new FbConnectionStringBuilder();
builder.Charset = "WIN1252";
builder.Database = "firebird2:DB_NAME";
builder.Dialect = 3;
builder.Role = "READ_ONLY_OTN";
builder.UserID = "TEST";
builder.Password = "Test";
builder.ServerType = FbServerType.Default;
fbConnection = new FbConnection(builder.ConnectionString);
fbConnection.Open();
}
}
}
除了错误的密码(我用FlameRobin检查了两次)之外,还有什么原因导致此错误?问题是,当连接到Firebird 3时,Firebird ADO.net提供程序(FirebirdSql.Data.FirebirdClient)只支持新的SRP身份验证插件,而不支持旧的\u Auth身份验证插件。如果您的用户是使用Legacy_UserManager创建的,则无法使用Firebird ADO.net提供程序进行身份验证。您需要使用Srp创建用户 根据确切的Firebird配置,您需要将
Srp
添加到UserManager
配置列表中,然后使用以下内容创建用户:
使用插件srp创建用户密码“”;
出于安全原因,我建议您删除使用Legacy_UserManager创建的用户:
使用pluginlegacy\u usermanager删除用户;
我还建议您从
UserManager
列表中删除Legacy\u UserManager
,或者确保Srp
在列表中处于第一位,以避免意外创建具有不太安全的用户管理器的用户(在不使用plugin子句的情况下执行SQL用户管理语句将默认为列表中的第一个用户管理器)。您的Firebird版本是什么,Firebird ADO.net提供程序版本是什么?服务器版本:WI-V3.0.5.33220 Firebird 3.0,ADO.net提供程序版本是7.5.0(NuGet)。FB3有几个版本“身份验证插件”-用户/密码字典“。您可能在其中一个中创建了used,并尝试与另一个连接。尝试在这两个中创建新用户,或以某种方式调整.Net Provider以使用FlameRobin使用的相同身份验证插件。另请参阅上的支持链接当连接为SYSDBA时,选择sec$user\u name,sec$plugin from sec$users
(专门针对您尝试在应用程序中使用的用户)?在firebird.conf
中,AuthServer
和UserManager
的设置是什么?@markrotveel但是.Net提供者会检查firebird.conf以获得该设置吗?如果是,那么它会在哪里查找它?我猜要拉的线程与.Net app和FlameRobin的行为不同