我必须收集一些PostgreSQL角色的信息。一条信息是角色是否具有与“通常”不同的设置,这里通常意味着只有少数参数的默认值(例如log_statement)。
到目前为止,我只有一个想法:遍历所有用户并发出命令
\c postgres username
SHOW log_statement;
Run Code Online (Sandbox Code Playgroud)
然后处理输出。
我想知道是否有类似查询pg_settings视图、显示每个用户设置的类似方法?我不需要知道特定于会话的差异,只需要知道那些持久化的差异。
我创建了一个对数据库具有删除权限的用户。
如何创建有权删除指定数据库的表而不是数据库的用户。
是否可以在同一个数据库中创建一个由多个用户拥有或访问的模式?
我正在阅读postgres create schema文档和postgres alter schema文档,并且没有提供多个用户的语法。
我也在谷歌上搜索这样的解决方案,无论是简单的还是困难的,但一无所获,甚至没有找到任何解决方法。
请问您能否指出解决方案或可能的解决方法,或者让我确定这种事情无论如何都不可能?
是否可以找出谁使用了 SQL-Server 登录?
让我们假设我们怀疑有人滥用 SQL 登录名,该登录名本应由应用程序仅用于登录 SQL-Server。使用SQL登录的域用户是否记录在任何地方,以便我们得出谁使用它的结论?
我可以使用哪些查询来列出 SQL Azure 中服务器和数据库的所有登录信息?
我试过跑步,select * from sys.sysusers但我猜这只是向用户展示
我有大约 50 个 postgres 数据库。我需要用他们各自的数据库名称检查所有用户。我知道\du给出了所有用户喜欢的列表,
List of roles
Role name | Attributes | Member of
----------------------------------+-----------------------------------+----------------------
foo Superuser {}
..
..
Run Code Online (Sandbox Code Playgroud)
它不显示数据库名称。我可以手动登录到每个数据库并运行\du以查看该数据库中存在的用户列表,但这会花费很多时间。那么是否有单行命令或简单的解决方法可以显示用户列表及其各自的数据库名称?
对于我们的软件,我们需要一个能够创建其他 MySQL 用户的 MySQL 用户。这对于 MySQL root 用户是可能的,但我们不想在我们的软件应用程序中使用 root 用户。有没有办法创建一个可以创建其他用户的 MySQL 用户?
我在互联网上阅读了多个主题和页面,这些主题和页面说可以使用 GRANT OPTION。但是当我查看 MySQL 权限描述时,该权限是“GRANT OPTION 权限使您能够将您自己拥有的权限授予其他用户或从其他用户中删除。” 所以不提供创建用户的选项,只给他们你拥有的权限。
也许我理解错了,但我害怕在我们的服务器上做错事。这也是我提问的原因。
我希望有人可以向我解释是否可能以及如何创建具有我们所需权限的用户。
我安装了 postgresql 10,我想对其他用户隐藏用户/角色的名称。我搜索了其他帖子,有人建议:
REVOKE SELECT ON pg_catalog.pg_authid FROM public;
REVOKE SELECT ON pg_catalog.pg_auth_members FROM public;
Run Code Online (Sandbox Code Playgroud)
完成所有这些操作后,user1 无法深入了解用户的信息,(Error retrieving roles from the database server. ERROR: permission denied for relation pg_auth_members)但仍可以将它们全部列出,如下图所示

当然 user1 不是超级用户。
我已经测试过这个没有效果:
REVOKE SELECT ON pg_catalog.pg_roles FROM user1;
REVOKE SELECT ON pg_catalog.pg_user FROM user1;
Run Code Online (Sandbox Code Playgroud)
对此也进行了测试,但没有效果:
REVOKE SELECT ON pg_catalog.pg_authid FROM user1;
REVOKE SELECT ON pg_catalog.pg_auth_members FROM user1;
Run Code Online (Sandbox Code Playgroud)
如果我启动下一个语句,用户将无法登录并且一切都已损坏:
REVOKE SELECT ON pg_catalog.pg_roles FROM public;
REVOKE SELECT ON pg_catalog.pg_user FROM public;
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这一目标?对我来说向其他用户隐藏用户的名称非常重要。
背景:我正在创建一个黑客 ctf(捕获标志)虚拟机。这是挑战之一......重点是避免用户可以看到“正确的数据库用户名”进行连接。这是他/她必须在数据库中查找提示和其他加密内容的内容。
编辑:“悲伤”的解决方法是创建数百个虚拟用户以“尝试隐藏”真实用户......但它必须是一个优雅的解决方案。有什么帮助吗?
我在Digital Ocean上关注了Ubuntu 18.04上的MySQL安装教程,在运行过程中mysql_secure_installation注意到以下几点:
默认情况下,MySQL 安装有一个匿名用户,允许任何人登录 MySQL,而无需为他们创建用户帐户。这仅用于测试,并使安装更顺畅。您应该在进入生产环境之前删除它们。
问题是,我如何访问这个匿名用户帐户?我已经简单地安装了数据库服务器。机器在局域网上,上面没有关键数据,所以我知道在生产中删除匿名用户是可取的,但在个人机器上学习它会很好,只要有一个简单的帐户来练习SELECTs和JOINS.
我正在尝试在 Postgres 数据库中创建两个用户 - 一个具有对两个模式中所有表的读写访问权限,另一个具有对相同模式的读写创建(即,能够进行 DDL 更改)。
我目前有这些陈述。
CREATE SCHEMA
schema_a;
CREATE SCHEMA
schema_b;
CREATE ROLE read;
CREATE ROLE read_write;
CREATE ROLE read_write_create;
GRANT USAGE ON SCHEMA schema_a, schema_b TO read;
GRANT SELECT ON ALL TABLES IN SCHEMA schema_a, schema_b TO read;
GRANT INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA schema_a, schema_b TO read_write;
GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA schema_a, schema_b TO read_write;
GRANT ALL ON SCHEMA schema_a, schema_b TO read_write_create;
GRANT read to read_write;
GRANT …Run Code Online (Sandbox Code Playgroud)