我想授予用户创建,更改和执行存储过程的权限,但是无法创建其他数据库对象.我将它们排除在角色db_ddladmin之外,但显式授予了"创建过程"和"执行"权限.这些权限显示在有效权限列表中.但是,当我尝试使用此登录创建存储过程时,我收到以下错误:
"指定的模式名称"dbo"要么不存在,要么您没有权限使用它."
有什么建议?
sql-server stored-procedures sql-server-2005 database-permissions
我的数据库中有一个用户,我想授予他只读一个视图的权限,没有更多,没有表,没有.
我怎样才能做到这一点?
非常感谢.
PS:我正在使用MS SQL Server 2005
我有一个在Windows上运行的mysql实例(和模式),我可以通过基于localhost的连接字符串作为服务器访问.
现在我希望能够从同一子网上的另一台机器访问此数据库.
如果可能,我想使用单个用户,但允许它从同一子网上的任何计算机访问.
我该如何为此设置安全性?(我已经打开了相关的防火墙端口)
谢谢,Eyal
我还在我的 ACL 项目中工作,我想对以下问题有一些想法:
我使用 MySQL 来存储我的用户、角色和权限。起初,我在我的 TABLE Roles 中创建了一个字段“parent_id”,我试图通过这个来管理每个用户的权限。这有点奏效,直到我意识到如果我添加一个新角色,管理层次结构和控制谁有权访问哪些资源真的很复杂。我做了一些搜索,我意识到使用关系数据库来处理层次结构真的很复杂,所以我放弃了使用层次结构。
我希望您能帮助找到管理用户创建的最佳解决方案:我有 4 个不同的用户:SuperAdmin、CustomerAdmin、Technician、client。例如,当我在页面中创建新用户时,我不想让技术人员创建类型为 CustomerAdmin 或 SuperAdmin 的新用户。
我想只让 SuperAdmin 创建一个新用户,但我的一个限制是我也必须让 CustomerAdmin 创建用户,也是技术人员。
试图更具说教性,超级管理员可以是我。客户管理员是我的客户,他有一家企业。在他的企业中,他可以创建两种类型的用户:技术人员和客户。
这只是一个例子,但如果我想创建一种新的角色,赋予他新的权限,我必须找到一种方法来拒绝他创建比他更强大的用户的权限。
我不确定我的问题是否客观,但欢迎任何可以与我讨论这个问题的人。
我们的SQL Server数据库具有报告功能,允许调用者读取但不写入任何表,因为用户(或者更准确地说,由代表用户操作的Web应用程序打开的连接)仅具有datareader权限.数据库.
我们希望能够编写一个存储过程,这是一个特殊的"清理报告",它将在运行另一个报告之前清除旧缓存数据的数据库.我们希望上面的同一个只读用户能够运行这个存储过程.存储过程中的查询将执行DELETE操作,但我们不希望让用户能够删除除调用此过程之外的任何内容.
我知道模块签名,但希望避免处理证书的复杂性.
还有其他解决方案吗?如果这很重要,我们正在使用SQL标准身份验证.
我试图弄清楚,使用Django管理模型访问权限的最佳方法是什么。
我有一个属于创建它们的用户的项目表。所有项目都通过RESTful API进行管理。使用此API时,我想限制对给定用户创建的项目的访问。
我必须创建多个表还是仅用一个表就可以实现相同的目的?如果必须使用多个表,如何将API请求与特定表相关联?
django database-permissions user-permissions django-rest-framework
我在 PostgreSQL 中创建了一个只读用户,它仍然能够创建表:
我创建了一个测试数据库,然后创建了一个readonly2用户。只给它 2 个表的选择权限。当我以readonly2用户身份登录此数据库时,我仍然可以创建表:
create database test1
create user readonly2 with password 'readonly';
grant select on test1 to readonly2
grant select on test2 to readonly2
Run Code Online (Sandbox Code Playgroud)
其中test1和test2是测试数据库中的 2 个表。
现在,当我以readonly2用户身份登录测试数据库时,我可以创建表:
test=> create table test55 (id int);
CREATE TABLE
Run Code Online (Sandbox Code Playgroud)
我只想创建一个具有选择权限的只读用户。我不想授予创建表权限。
我有一个包含4列的PostgreSQL数据库表 - 标记为column_a,column_b等.我想用简单的select查询查询此表:
select * from table_name;
Run Code Online (Sandbox Code Playgroud)
我得到了一些看起来像的结果:
column_a | column_b
---------+---------
'a value'|'b_value'
Run Code Online (Sandbox Code Playgroud)
但是当我使用这个查询时:
select * from schema_name.table_name;
Run Code Online (Sandbox Code Playgroud)
我得到了完整的结果:
column_a | column_b | column_c | column_d
---------+----------+----------+---------
'a value'|'b value' |'c value' |'d_value'
Run Code Online (Sandbox Code Playgroud)
列c并d在日后添加,初始表创建后.我的问题是:当模式名称被排除在选择查询之外时,为什么数据库会忽略后面的列?
postgresql database-permissions database-schema search-path postgresql-9.2
我已尝试在此处使用文档,但似乎无济于事。如果可以,请给我一个例子。
revoke select (column1, column2) on table from specific_user
Run Code Online (Sandbox Code Playgroud)
没用。
Access privileges
Schema | Name | Type | Access privileges | Column privileges | Policies
--------+-------+-------+---------------------------+-------------------+----------
public | users | table | himanshu=arwdDxt/himanshu+| |
| | | reports_user=r/himanshu | |
(1 row)
Run Code Online (Sandbox Code Playgroud) 我有一个client.UpdateClient由 SQL 用户(称为MyWCFServicesUser.
MyWCFServicesUser具有数据库的数据读取者和数据写入者权限。它还具有存储过程的执行权限(但没有其他权限)。
client.Client存储过程将在with中插入一行SET IDENITY_INSERT client.Client ON。
当我运行带有集成安全性的存储过程(来自 SSMS)时(我是sa),一切正常。
MyWCFServicesUser当我(从 SSMS)运行它时,它失败并出现以下错误:
消息 1088,级别 16,状态 11,过程 UpdateClient,第 33 行
找不到对象“client.Client”,因为它不存在或您没有权限。
我通常将所有存储过程和表都放在默认 (dbo) 模式中,但这次我尝试不使用 dbo。
这就是我没有权限的原因吗?我需要以某种方式提升存储过程吗?还是用户?或者以某种方式改变架构?
我很困惑...
sql-server database-permissions sql-server-2008 sql-server-2008-r2
postgresql ×3
sql-server ×3
acl ×1
django ×1
mysql ×1
php ×1
search-path ×1
security ×1
sql ×1
subnet ×1