标签: database-permissions

授予具有特定前缀的多个表的权限

我使用表前缀方法让几个客户端使用相同的数据库.每个客户端创建的表数量约为55.而不是通过手动列出表格来完成所有授权,我可以执行以下操作吗?

GRANT SELECT,INSERT,UPDATE,DELETE ON database.prefix_* TO 'username'@'localhost' IDENTIFIED BY 'password';
Run Code Online (Sandbox Code Playgroud)

mysql database grant database-permissions

16
推荐指数
1
解决办法
2万
查看次数

Amazon Redshift Grants - 即使用户已授予架构中的所有表,也无法访问新表

我有位在亚马逊红移一个有趣的情况我有谁拥有授予在公共模式的所有表中选择用户X,但一旦创建一个新的表,这个授权似乎并不适用于新表.这是正常的行为吗?如果是,那么如何处理它以便维护模式级别授权.谢谢.

database-permissions amazon-redshift

15
推荐指数
3
解决办法
1万
查看次数

为postgresql中创建的任何新表授予用户权限

目前我正在使用它来授予权限:

grant select on all tables in schema public to <user_name>;

alter default privileges in schema public grant select on tables to <user_name>;
Run Code Online (Sandbox Code Playgroud)

根据文档,第二个声明应该已经解决了问题.但是,当将新表添加到公共模式时,它不会自动向user_name授予权限.

我正在使用此用户(user_name)将数据复制到另一个数据库.

postgresql grant database-permissions

13
推荐指数
3
解决办法
7400
查看次数

允许存储过程使用SQL Server 2012中的证书从系统表中进行选择

我正在尝试运行尝试从系统表中选择的存储过程时遇到与权限相关的问题.基本上我试图通过直接从sys.dm_tran_current_transaction表中获取我需要的数据来解决SQL Server 2012中sp_bindtoken系统存储过程的弃用问题.

我发现的一个解决方案是:

  • 创建证书
  • 从证书创建用户/登录
  • 授予用户VIEW SERVER STATE权限
  • 使用证书对存储过程进行签名
  • 执行存储过程,该存储过程在刚刚创建的用户的上下文中运行

这种方法似乎在SQL Server 2008 R2中运行良好.但是在SQL Server 2012中,即使脚本看起来运行正常,在运行时,存储过程也会在尝试从上面的系统表中进行选择时失败并显示权限错误.

我目前的脚本看起来有点像这样:

USE OurDatabase
GO

CREATE CERTIFICATE OurDatabaseProcCert
FROM FILE = 'C:\Path\To\OurDatabaseProcCert.cer'
WITH PRIVATE KEY (
FILE = 'C:\Path\To\OurDatabaseProcCert.pvk',
ENCRYPTION BY PASSWORD = '$0m3$tr0ngp@$$w0rd',
DECRYPTION BY PASSWORD = '$0m3$tr0ngp@$$w0rd');
GO

USE master
GO

CREATE CERTIFICATE OurDatabaseProcCert
    FROM FILE = 'C:\Path\To\OurDatabaseProcCert.cer'
WITH PRIVATE KEY (
    FILE = 'C:\Path\To\OurDatabaseProcCert.pvk',
    ENCRYPTION BY PASSWORD = '$0m3$tr0ngp@$$w0rd',
    DECRYPTION BY PASSWORD = '$0m3$tr0ngp@$$w0rd');
GO

CREATE LOGIN OurDatabaseServerLogin
    FROM CERTIFICATE OurDatabaseProcCert …
Run Code Online (Sandbox Code Playgroud)

sql sql-server stored-procedures database-permissions sql-server-2012

11
推荐指数
1
解决办法
1057
查看次数

列表导致"在数据库中拒绝CREATE TABLE权限"ASP.NET - MVC4

我正在使用ASP.NET MVC 4 - c#连接到实时数据库,并列出结果,但是当我去查看页面时它返回以下错误:

CREATE TABLE permission denied in database 'DatabaseName'.

Description: An unhandled exception occurred during the execution
of the current web request. Please review the stack trace for more
information about the error and where it
originated in the code.



Exception Details: System.Data.SqlClient.SqlException: CREATE TABLE
permission denied in database 'DatabaseName'.

Source Error: 


Line 16:         public ActionResult Index()
Line 17:         {
Line 18:             return View(db.AccControls.ToList());
Line 19:         }
Line 20
Run Code Online (Sandbox Code Playgroud)

控制器:

namespace TestDBCon.Controllers
{
    public class HomeController : …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc database-connection database-permissions asp.net-mvc-4

11
推荐指数
2
解决办法
1万
查看次数

使用MongoDB有效地确定层次结构中记录的所有者

我想要实现以下目标:

选择我拥有的所有记录,其中所有权是我创建的对象或我管理的用户创建的对象,其中用户管理可以是管理用户的用户层次结构

所有权显然是直截了当的,可以通过与所有者对应的简单ID来处理.用户管理的层次结构让我有点难以在不通过大量ID列表的情况下执行(显然,您可以找到每个被管理的用户并使用IN子句或类似内容列出由这些用户创建的每个对象).

理想情况下,这一切都发生在单个查询中,因此可能发生正常的分页和条件.

我当时认为可能有一些数学要做到这一点 - 拥有可以某种方式进行哈希处理的ID,以确定它们是否归命令链中的任何人所有.

对这类事情的任何引用?

我错过了一些明显的东西吗

使用MongoDB如果有所作为,但很高兴考虑其他数据库的灵感.

更新: 创建了一个包含1,000,000条记录的MongoDB集合,以获得有关查询上IN子句的可管理数量参数的确切内容的一些可靠数据.当我得到一些具体信息时会报告.

分析:

使用ruby-mongo-driver和ruby基准lib.

MongoDB Collection包含1039944条记录

记录定义为:

{
    first_name: String,
    last_name: String,
    email: String,
    phone: String,
    company: String,
    owner: BSON::ObjectId
 }
Run Code Online (Sandbox Code Playgroud)

随机生成所有字段的值.

Owner字段有一个索引.

使用以下条件运行查询:

conditions = {"owner" => { "$in" => id_list }}
opts = {skip: rand, limit: 100}
Run Code Online (Sandbox Code Playgroud)

结果:

    # 10201 ids
    #              user     system      total        real
    # 0:       0.240000   0.000000   0.240000 (  0.265148)
    # 1:       0.240000   0.010000   0.250000 (  0.265757)
    # 2:       0.240000   0.000000   0.240000 (  0.267149)
    # …
Run Code Online (Sandbox Code Playgroud)

database database-design database-permissions mongodb

10
推荐指数
1
解决办法
5176
查看次数

ASP.Net Membership.DeleteUser

在测试中,我使用的db上的用户是一个很大的jefe.在制作中,他只有Execute.

我打电话的时候

Membership.DeleteUser(user)
Run Code Online (Sandbox Code Playgroud)

在测试中,它起作用了.我在制作中尝试相同,我得到了这个:

DELETE语句与REFERENCE约束"FK__aspnet_Us__UserI__37703C52"冲突.冲突发生在数据库"Testing",表"dbo.aspnet_UsersInRoles",列'UserId'中.

在我的搜索中(在Google上搜索),我遇到了这个 家伙说的链接,

错误:DELETE语句与REFERENCE约束"FK__aspnet_Me__UserI__15502E78"冲突.冲突发生在数据库"YourDBName",表"dbo.aspnet_Membership",列"UserId"中.

我花了一些时间在多个站点和选项中找到解决方案,因为错误和可能的解决方案相当误导.事实证明,至少在我的情况下,这是成员资格数据库的权限问题.我用来连接的用户有权查看数据库本身的成员资格详细信息,但作为aspnet_Users_DeleteUser存储过程的一部分,它从sysobjects表中选择.成员资格连接用户显然没有足够的权限进行选择,因此整体删除失败.

我的修复是将用户添加到成员资格数据库的aspnet_Membership_FullAccess角色.

但是当我这样做时它没有用.任何人对如何处理这个都有任何想法?

asp.net asp.net-membership database-permissions

9
推荐指数
3
解决办法
9485
查看次数

如何在不同的数据库中为登录访问SQL Server数据库邮件过程?

我想知道如何在SQL Server中设置权限,以允许我的应用程序登录/角色能够使用发送电子邮件msdb.dbo.sp_send_dbmail.

我有一个数据库MyDb,一个MyUser角色成员的用户AppRole.我有一个myProc调用的存储过程msdb.dbo.sp_send_dbmail.如果我myProc在登录时执行,因为sa它一切正常,但如果我在登录时执行,因为MyUser我收到错误:

消息229,级别14,状态5,过程sp_send_dbmail,行1
对象'sp_send_dbmail',数据库'msdb',架构'dbo'上的EXECUTE权限被拒绝.

我的数据库没有TRUSTWORTHY ON,因此我认为我不能使用EXECUTE AS来模仿其他用户,例如使用EXECUTE AS OWNER创建myProc ...(MSDN参考)

因此,我认为我需要让我的用户也是msdb中的用户,但是我可以在角色级别执行此操作,还是需要使我的每个数据库用户也是msdb中的用户?

我正在使用的数据库邮件配置文件设置为public,因此我认为这与配置文件权限无关.

sql-server sql-server-2005 database-permissions database-mail

8
推荐指数
1
解决办法
3万
查看次数

用户在MySQL中具有SELECT权限的表的列表

简短版本:如何编写SQL过程来列出特定用户可以访问MySQL数据库中的几个表中的哪一个?

更长的版本:

我正在编写一个多用户应用程序,它使用公司的几个分支机构的数据访问数据库.数据库具有许多任何用户都可以访问的查找表,以及只有授权用户才能访问的每个分支的表.我的策略是:

  • 编写存储过程,返回用户具有SELECT权限的相关表的列表.
  • 从应用程序,调用该过程.如果只返回一个表,则使用它,否则让用户选择他们想要访问的分支(例如,对于管理员).

我无法弄清楚如何编写这样的存储过程.SHOW GRANTS FOR CURRENT_USER是一个明显的可能性,但解析如下:

GRANT SELECT ON Company.BranchABC TO 'auser'@'%clientdomain.com'
Run Code Online (Sandbox Code Playgroud)

在SQL弄清楚表是什么,似乎这样太乱了.SELECT从拥有权限的实际表中执行a 操作似乎也有问题,因为我必须复制MySQL的逻辑以组合来自各种表(用户,数据库,主机等)的权限.

任何智慧的话?

mysql database-permissions

7
推荐指数
2
解决办法
2万
查看次数

Ms Access:记录无法读取; 没有[表]的读取权限

我写了脚本,用于下载mdb文件并阅读OLEDB提供程序.一切正常,但如果我尝试从表中读取,它会引发异常:

Ms Access:记录无法读取; 没有tblMytable的读取权限

 var cmd = new OleDbCommand("SELECT * FROM tblMytable", conn);
 var reader = cmd.ExecuteReader();
Run Code Online (Sandbox Code Playgroud)

我直接在Ms Access中为用户"administrator"更改了权限,它可以正常工作.但问题是,这个脚本每天运行两次,下载大约20个文件.所以不可能手动更改权限.

是否可以以编程方式更改表的读取权限?

非常感谢任何想法!

oledb permissions ms-access database-permissions

7
推荐指数
1
解决办法
1万
查看次数