我错误地删除了所有用户的mysql ...所以我无法连接到mysql.
有没有人有想法?
我尝试重新安装它,但它不起作用......
PS:我在Archlinux上.
提前致谢 !
所述用于MSDN文档sys.database_permissions说,状态栏可以是“G”,“d”,“R”,或“W”。'R' 值有一个 'REVOKE' 的描述,这听起来像是具有该值的行对应于已撤销的权限。然而,尽我可以告诉的文档的REVOKE,撤销权限完全删除它,所以我希望这只是从删除行sys.database_permissions。这就是我测试授予然后撤销许可时发生的情况;在GRANT该权限显示在该视图中之后,以及在REVOKE它消失之后。
我的问题:在什么情况下这个视图会包含状态设置为“R”的行?我问这个是因为我不确定在代码中检查这个视图时是否需要处理“R”行。
我可以想到一些可能发生这种情况的潜在场景,但还没有找到任何确认:
REVOKE命令时可能会非常短暂地出现,然后整行消失。我没有观察到这一点,但大概只有一个很小的时间窗口才会出现。我想创建一个有权创建和删除视图但不删除表或数据库的用户.这样我在测试我的视图时可以玩,而不会有意外删除表的风险.
有一种GRANT CREATE VIEW特权,但似乎没有GRANT DROP VIEW对应物.GRANT DROP显然适用于数据库,表格和视图.
这在MySQL中可行吗?
我在 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) 是否可以将用户权限从 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)
这似乎有效,但是我是否错过了使用此方法可能需要完成的任何其他操作或其他“陷阱”?
我想将权限从一个数据库复制到另一个数据库.可以通过简单地复制mysql表来完成吗?
我从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) 您能告诉我,在SQL Server 2005中,如何授予用户访问读取数据库图表所需的权限?
非常感谢!
我遇到过这样的情况,当下面的语句抛出一个错误,说由于权限而无法执行:
ALTER DATABASE [{0}] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
Run Code Online (Sandbox Code Playgroud)
无法在网络上的任何地方找到有关其所需权限的任何信息.
我开发了一个存储过程,以便从备份文件恢复数据库并向其中添加应用程序用户。此存储过程属于 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
sql-server ×5
mysql ×4
permissions ×3
sql ×2
archlinux ×1
database ×1
postgresql ×1
sqlclr ×1
t-sql ×1