我刚刚将我的数据库升级到 Firebird 4.0 并且在使用数据库管理工具连接到数据库时似乎一切正常。
所以现在我尝试连接,在确保我已经将我的 ADO.Net 升级到 FirebirdSql.Data.FirebirdClient v8.0.1(最新)之后。
这是我创建连接字符串的方式(是的,数据库路径存在,并且我确保用户具有修改权限):
FbConnectionStringBuilder cs = new FbConnectionStringBuilder();
cs.Database = @"C:/myPath/MyDB.FDB";
cs.DataSource = "localhost";
cs.UserID = "sysdba";
cs.Password = "masterkey";
cs.Dialect = 3;
cs.Pooling = false;
cs.ServerType = FbServerType.Default;
// --- Omitted at first - any of the 3 types leads to errors!
//cs.WireCrypt = FbWireCrypt.Disabled;
var DBConn = new FbConnection(cs.ConnectionString);
DBConn.Open();
现在,请注意我遗漏了WireCrypt
选项(故意开始)。我的错误是:
登录时出错,详情请查看服务器firebird.log
firebird.log
说:
身份验证错误 服务器上没有匹配的插件
所以我四处搜索,发现它可能来自有线加密。好吧,所以我确实尝试了所有 3 个版本的有线加密 - 如果我使用Required
or Enabled
,我会收到上述错误。如果我使用Disabled
,我得到
客户端和服务器上请求的有线加密级别不兼容
此外,我尝试在我的代码中进行设置WireCrypt = Disabled
,firebird.conf
重新启动服务并再次测试 - 现在我的结果与前两种情况相同:
身份验证错误 服务器上没有匹配的插件
所以我想我在这里遗漏了一些关于加密插件的东西——但我在那里找不到任何有价值的信息,谢谢你的帮助!
更新:这是我尝试的设置和我得到的错误:
尝试 1:所有firebird.conf
默认值(我在此处发布以保持简短):
连接字符串 1:
character set=NONE;data source=localhost;initial catalog=C:\Users\DBAccess\MYDB.FDB;user id=SYSDBA;password=masterkey;wire crypt=Disabled
客户端和服务器上请求的有线加密级别不兼容
连接字符串 2(wire crypt=启用或必需)
身份验证错误 服务器上没有匹配的插件
尝试2:
WireCrypt = Disabled
连接字符串 1:
character set=NONE;data source=localhost;initial catalog=C:\Users\DBAccess\MYDB.FDB;user id=SYSDBA;password=masterkey;wire crypt=Disabled
身份验证错误 服务器上没有匹配的插件
连接字符串 2 (wire crypt=Enabled) => 同样的错误!
尝试 3:
AuthClient = Srp256, Srp
UserManager = Srp
连接字符串 1:
character set=NONE;data source=localhost;initial catalog=C:\Users\DBAccess\MYDB.FDB;user id=SYSDBA;password=masterkey;wire crypt=Disabled
客户端和服务器上请求的有线加密级别不兼容
连接字符串 2(wire crypt=启用或必需)
身份验证错误 服务器上没有匹配的插件
尝试4:
AuthClient = Srp256, Srp
UserManager = Srp
WireCryptPlugin = ChaCha, Arc4
WireCrypt = Enabled
ServerMode = Super
连接字符串(与连接字符串中的任何有线加密选项相同的结果):
character set=NONE;data source=localhost;initial catalog=C:\Users\DBAccess\MYDB.FDB;user id=SYSDBA;password=masterkey;wire crypt=Enabled
身份验证错误 服务器上没有匹配的插件
注意:我还在 中看到以下消息firebird.log
,这可能是由于服务重新启动...
inet_error:读取 errno = 10054,客户端主机 = DESKTOP-1234,地址 = 127.0.0.1/60348,用户 = myusername