标签: database-permissions

无法连接到mysql,因为没有用户

我错误地删除了所有用户的mysql ...所以我无法连接到mysql.
有没有人有想法?
我尝试重新安装它,但它不起作用......

PS:我在Archlinux上.
提前致谢 !

mysql database-permissions database-security archlinux

5
推荐指数
1
解决办法
1722
查看次数

sys.database_permissions 何时会包含状态 = 'R' 的行?

所述用于MSDN文档sys.database_permissions说,状态栏可以是“G”,“d”,“R”,或“W”。'R' 值有一个 'REVOKE' 的描述,这听起来像是具有该值的行对应于已撤销的权限。然而,尽我可以告诉的文档的REVOKE,撤销权限完全删除它,所以我希望这只是从删除行sys.database_permissions。这就是我测试授予然后撤销许可时发生的情况;在GRANT该权限显示在该视图中之后,以及在REVOKE它消失之后。

我的问题:在什么情况下这个视图会包含状态设置为“R”的行?我问这个是因为我不确定在代码中检查这个视图时是否需要处理“R”行。

我可以想到一些可能发生这种情况的潜在场景,但还没有找到任何确认:

  • 如果您授予了一些全面的权限,然后撤销了全面权限所隐含的更细化的权限(细化权限将显示为“R”),则可能会出现“R”行。到目前为止,我还没有找到任何此类权限。
  • 'R' 行在 SQL 处理REVOKE命令时可能会非常短暂地出现,然后整行消失。我没有观察到这一点,但大概只有一个很小的时间窗口才会出现。

sql sql-server permissions database-permissions

5
推荐指数
2
解决办法
581
查看次数

删除视图但不删除表的权限

我想创建一个有权创建和删除视图但不删除表或数据库的用户.这样我在测试我的视图时可以玩,而不会有意外删除表的风险.

有一种GRANT CREATE VIEW特权,但似乎没有GRANT DROP VIEW对应物.GRANT DROP显然适用于数据库,表格和视图.

这在MySQL中可行吗?

mysql database-permissions

5
推荐指数
1
解决办法
1874
查看次数

在 MySQL VIEW 上运行 EXPLAIN 时出现权限错误

我在 MySQL 5.0 数据库中定义了一个视图:

CREATE OR REPLACE ALGORITHM=MERGE 
DEFINER=db1_user@'%' SQL SECURITY DEFINER 
VIEW db2.data_view AS SELECT * FROM db1.data_table;
Run Code Online (Sandbox Code Playgroud)

这样做是为了让 db2 用户能够访问 db1 中的这个单个表,并且适用于 SELECT 查询:

[db2_user@db2]> select name from data_view limit 1;
+----------------+
| name           |
+----------------+
| slartibartfast |
+----------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

然而,当我尝试解释相同的查询时,我得到:

[db2_user@db2]> explain select name from data_view limit 1;
ERROR 1345 (HY000): EXPLAIN/SHOW can not be issued; lacking privileges for 
underlying table
Run Code Online (Sandbox Code Playgroud)

我向 db2 用户授予了SHOW VIEW该视图的权限,但对于EXPLAIN.

GRANT …
Run Code Online (Sandbox Code Playgroud)

mysql database database-permissions

5
推荐指数
1
解决办法
7908
查看次数

从另一个表复制权限

是否可以将用户权限从 PostgreSQL 数据库中的一个表复制到另一个表?是否只是将pg_class.relacl目标表的列值更新为源表的值,如下所示:

UPDATE pg_class
SET relacl=(SELECT relacl FROM pg_class WHERE relname='source_table')
WHERE relname='target_table';
Run Code Online (Sandbox Code Playgroud)

这似乎有效,但是我是否错过了使用此方法可能需要完成的任何其他操作或其他“陷阱”?

postgresql database-permissions

4
推荐指数
1
解决办法
5104
查看次数

将权限从一个mysql数据库复制到另一个

我想将权限从一个数据库复制到另一个数据库.可以通过简单地复制mysql表来完成吗?

mysql database-permissions

4
推荐指数
1
解决办法
6996
查看次数

TSQL - 执行CLR权限

我从CLR(.net Assembly)获得了一个sql过程,当执行时返回错误

Msg 6522, Level 16, State 1, Procedure sp_HelloWorld, Line 0
A .NET Framework error occurred during execution of user defined routine or aggregate 'sp_HelloWorld': 
System.Security.SecurityException: Request for the permission of type 'System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
System.Security.SecurityException: 
   at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)
   at System.Security.PermissionSet.Demand()
   at System.Data.Common.DbConnectionOptions.DemandPermission()
   at System.Data.SqlClient.SqlConnection.PermissionDemand()
   at System.Data.SqlClient.SqlConnectionFactory.PermissionDemand(DbConnection outerConnection)
   at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   at System.Data.SqlClient.SqlConnection.Open()
   at HelloWorld.SQLCLR.HelloWorld()
Run Code Online (Sandbox Code Playgroud)

这是我的SQL脚本

go
drop procedure HelloWorld
drop assembly HelloWorld
GO

create assembly HelloWorld from 'F:\HelloWorld.dll'
with …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server sqlclr database-permissions

4
推荐指数
1
解决办法
8409
查看次数

SQL Server:读取数据库图表的权限

您能告诉我,在SQL Server 2005中,如何授予用户访问读取数据库图表所需的权限?

非常感谢!

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

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

在SQL Server 2008上运行"ALTER DATABASE SET SINGLE_USER"语句所需的权限

我遇到过这样的情况,当下面的语句抛出一个错误,说由于权限而无法执行:

ALTER DATABASE [{0}] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
Run Code Online (Sandbox Code Playgroud)

无法在网络上的任何地方找到有关其所需权限的任何信息.

sql sql-server database-permissions sql-server-2008

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

SQL Server:存储过程的 EXECUTE AS 子句未授予系统管理员权限

我开发了一个存储过程,以便从备份文件恢复数据库并向其中添加应用程序用户。此存储过程属于 master 数据库。

问题是我的 IT 部门不允许我使用管理员用户,只能使用系统管理员用户的 EXECUTE AS 语句。

我可以恢复数据库,但我找不到在过程结束时添加用户的方法。

我使用的代码:

CREATE PROCEDURE [dbo].[myProc] 
@database VARCHAR(50)
WITH EXECUTE AS 'aSysAdminUser' 
AS
BEGIN
    --Restore the database (working)
    --Add the application user    (not working)                  
    SET @sqlScript = 'USE '+@database +';
    CREATE USER [myApplicationUser] FROM LOGIN [myApplicationUser];
    EXEC sp_addrolemember ''db_owner'', ''myApplicationUser'''
    EXEC(@sqlScript)
END
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我收到以下错误消息:

服务器主体“aSysAdminUser”无法在当前安全上下文下访问数据库“database”。

知道如何使用 EXECUTE AS 语句从主数据库上的存储过程在动态参数数据库名称中创建用户吗?

谢谢

sql-server permissions impersonation database-permissions sql-server-2008-r2

4
推荐指数
1
解决办法
4161
查看次数