gpt4 book ai didi

c# - 如何通过 SQL 枚举用户列表?

转载 作者:行者123 更新时间:2023-11-30 23:19:41 26 4
gpt4 key购买 nike

我正在创建一个简单的工具来管理我们产品的数据库用户,其中包含基本的 CRUD 操作。该工具是在 VS2013 中构建的,使用针对 Firebird 2.5 数据库的 Firebird ADO v5.5.5.0 连接。

有没有办法用SQL枚举用户列表?

我需要显示用户列表,然后对该列表执行 CRUD 操作。

运行如下命令

SELECT RDB$USER
FROM RDB$USER_PRIVILEGES
GROUP BY 1

this link here所示是不够的,因为它要求此表中存在用户权限。

如有任何帮助,我们将不胜感激。谢谢。

最佳答案

在 Firebird 2.5 或更早版本中,访问所有用户列表的唯一方法是通过服务 API。 Firebird ADO.net 提供程序为此提供了一个实用程序类:FirebirdSql.Data.Services.FbSecurity:

var fbSecurity = new FbSecurity(ConnectionString);
var users = fbSecurity.DisplayUsers();
foreach (var user in users)
{
Console.WriteLine(user.UserName);
}

您还可以使用该类来添加、删除或修改用户。

请注意,对于大多数用户而言,这仅限于该用户,只有 SYSDBA 和具有 RDB$ADMIN 角色的用户才可以查看所有用户。

请注意,Firebird 3 弃用了用于用户管理的服务 API,从 Firebird 3 开始,您应该使用 SQL 用户管理语句。参见 SQL Features for Managing Access .

Firebird 3 还添加了 virtual table SEC$USERS允许当前用户管理的用户。对于大多数用户,这通常只是那个用户,只有 SYSDBA 和具有 RDB$ADMIN 角色的用户才可以查看所有用户。

请注意 Firebird 3 可以有多个身份验证插件,这意味着用户名可以出现多次(即每个插件最多一次)。

关于c# - 如何通过 SQL 枚举用户列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40144495/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com