标签: permissions

无法删除“GRANT USAGE”

我正在测试一些东西,并添加了一个:

grant usage on statistics.* to cptnotsoawesome@localhost identified by 'password';
Run Code Online (Sandbox Code Playgroud)

所以现在当我做

show grants for cptnotsoawesome@localhost;
Run Code Online (Sandbox Code Playgroud)

我可以看到其中之一是:

Grants for cptnotsoawesome@localhost
----------------------------------
GRANT USAGE ON *.* TO 'cptnotsoawesome'@'localhost' IDENTIFIED BY PASSWORD 'somePEW-PEWstring' 
Run Code Online (Sandbox Code Playgroud)

现在我想删除它,因为我认为它存在安全隐患,所以我这样做:

REVOKE USAGE ON *.* FROM 'cptnotsoawesome'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

但它仍然显示授权列表中的USAGE grant。

Grants for cptnotsoawesome@localhost
----------------------------------
GRANT USAGE ON *.* TO 'cptnotsoawesome'@'localhost' IDENTIFIED BY PASSWORD 'somePEW-PEWstring' 
Run Code Online (Sandbox Code Playgroud)

任何想法为什么?我究竟做错了什么?

mysql permissions

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

有什么原因我不应该将我的数据库所有者设置为 [sa]?

昨天我问了这个关于更改我拥有的多个数据库的 dbo 的问题。这种变化是有道理的,但我想说清楚。

有什么好的理由或情况为什么我不应该将数据库的 dbo 设置为 [sa]?

sql-server-2005 sql-server permissions sql-server-2000

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

授予典型用户的合理权限是什么?

我发现MySQL 提供的特权列表有点让人不知所措。我不确定谁应该拥有什么特权。在我看来,我的情况有三个典型的用户:

  1. root
  2. developer
  3. application

root是不言自明的。对于developer此用户需要能够轻松访问任何数据库,对其进行调整等。对于初学者,我将此用户设置为此权限集:

SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON
Run Code Online (Sandbox Code Playgroud)

application有一个更有限的集合。它应该仅限于操作特定的数据库。

我不确定要授予哪些合理的特权。授予开发人员和应用程序的合理权限集是什么?为什么?

mysql security permissions

15
推荐指数
2
解决办法
9867
查看次数

如何在没有超级用户的情况下查看 pg_stat_activity 中另一个会话的查询?

我有一个 Postgresql 9.2 数据库。在此数据库上创建了两个用户。当我以超级用户身份执行以下查询时,我可以看到所有内容。

select * from pg_stat_activity
Run Code Online (Sandbox Code Playgroud)

但是,是否可以在不以超级用户身份连接的情况下获得相同的结果?

我应该授予/创建哪个权限/角色以获得超级用户可以看到的结果?

postgresql permissions role postgresql-9.2

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

授予对 MS SQL 中特定数据库中所有表的 Select 访问权限

我有一个服务器,其中包含多个数据库,这些数据库包含在同一个服务器/项目中。我正在使用 MS SQL Server 2012。

我设置了一个特殊角色,其中包含 3 个属于该角色的用户。我想授予 Select 对 1 个特定数据库中所有表的角色的访问权限。

有问题的数据库是一个存档数据库,其中包含过去 12 年中每个月的存档表。最初创建角色时,我通过运行以下命令授予访问权限:

GRANT SELECT ON [dbo].[myarchivetable] TO myspecialrole
Run Code Online (Sandbox Code Playgroud)

这很有效,因为我只需要更改年份和月份并将其全部作为 1 个脚本运行。

我现在发现他们需要选择访问存档数据库中的每个表。我可以执行上述方法,但是必须将所有这些都写出 132 次,很容易出错。

如何轻松地将 myspecialrole 添加到该数据库中的每个表?

sql-server permissions role sql-server-2012

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

从非系统管理员域用户拥有的 SQL 代理作业运行 SSIS 包

我有两个 SSIS 包,它们作为更大的 SSIS 部署的一部分在夜间(通过 SQL Server 代理)运行,没有任何问题。一切都使用 Windows 身份验证,计划作业由系统管理员(好吧,我)拥有并作为SQL Server 代理服务帐户运行。

因此,数据基本上在source system ~> transit db ~> staging ~> NDS一夜之间消失了。

我关心的两个 SSIS 包分别处理一组特定数据的transit db ~> stagingstaging ~> NDS部分。

域用户(非系统管理员)在 中执行某些操作source system并将有趣的数据推送到 中transit db,因此我需要一种方法来在工作时间内获取此更新的数据以更新NDS:决定此人触发的最简单方法该 ETL 是通过单击启用宏的 Excel 工作簿中的按钮来实现的,该工作簿通过 ODBC(使用 Windows 身份验证)连接到 SQL Server 并执行存储过程。

存储过程如下所示:

create procedure dbo.UpdateMaterialInventory
as
begin
    execute msdb.dbo.UpdateMaterialInventory;
end
Run Code Online (Sandbox Code Playgroud)

[msdb] 中的“姐妹”存储过程如下所示:

create procedure dbo.UpdateMaterialInventory
with execute as 'SqlAgentProxy'
as
begin
    execute msdb.dbo.sp_start_job …
Run Code Online (Sandbox Code Playgroud)

sql-server permissions ssis sql-server-agent sql-server-2014

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

Postgresql 无需超级用户即可启用扩展

我有一个 PostgreSQL 9.5 服务器,上面有自动为用户创建角色和数据库的脚本。在这些数据库中启用特定扩展(例如 pgcrypto)会很有帮助,但据我所知,必须是超级用户才能运行CREATE EXTENSION. 有没有办法在不使用超级用户帐户手动登录的情况下启用此类扩展?

postgresql permissions postgresql-extensions

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

我如何找出*为什么*用户具有某些有效权限?

我知道我可以使用sys.fn_my_permissions以下方法查询有效权限:

USE myDatabase;
SELECT * FROM fn_my_permissions('dbo.myTable', 'OBJECT') 

 entity_name | subentity_name | permission_name 
------------------------------------------------
 dbo.myTable |                | SELECT          
 dbo.myTable |                | UPDATE          
 ...
Run Code Online (Sandbox Code Playgroud)

这告诉我当前用户myTable在数据库中是否具有 SELECT、INSERT、UPDATE 等权限myDatabase

是否可以很容易地找出为什么用户拥有这些权限?例如,我希望有一个fn_my_permissions_ex输出附加reason列的函数:

USE myDatabase;
SELECT * FROM fn_my_permissions_ex('dbo.myTable', 'OBJECT') 

 entity_name | subentity_name | permission_name | reason
------------------------------------------------------------------------------------------------------------------------------------
 dbo.myTable |                | SELECT          | granted to database role public
 dbo.myTable |                | UPDATE          | member of group MYDOMAIN\Superusers, which belongs to database role db_datawriter
 ... …
Run Code Online (Sandbox Code Playgroud)

security sql-server permissions debugging

14
推荐指数
1
解决办法
4403
查看次数

PostgreSQL:关系的权限被拒绝

我对在 PostgreSQL 中设置权限有点困惑。

我有这些角色:

                             List of roles
 Role name |                   Attributes                   | Member of 
-----------+------------------------------------------------+-----------
 admin     | Superuser, Create role, Create DB, Replication | {}
 meltemi   | Create role, Create DB                         | {rails}
 rails     | Create DB, Cannot login                        | {}
 myapp     |                                                | {rails}
Run Code Online (Sandbox Code Playgroud)

和数据库:

                                    List of databases
        Name         | Owner  | Encoding |   Collate   |    Ctype    | Access privileges 
---------------------+--------+----------+-------------+-------------+-------------------
 myapp_production    | rails  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 ...
Run Code Online (Sandbox Code Playgroud)

用户myapp在查询myapp_production数据库添加和删除记录时没有问题。我希望meltemi也能够查询相同的数据库。所以,我创建了一个角色 …

postgresql authorization permissions role

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

无法将 MySQL 数据输出到文件

我正在尝试将 MySQL 表中的数据输出到文件,但出现权限错误:

$ pwd
/home/dotancohen
$ mkdir in
$ chmod 777 in/
$ mysql -ugs -p
mysql> USE someDatabase;
mysql> SELECT * FROM data INTO OUTFILE '/home/dotancohen/in/data.csv';
ERROR 1045 (28000): Access denied for user 'gs'@'localhost' (using password: YES)
mysql>
Run Code Online (Sandbox Code Playgroud)

如果有问题的目录被chmodded为777,那么为什么MySQL用户不能写入文件?有趣的是,我也不能写入 /tmp/。

编辑: 看起来数据库用户具有适当的 MySQL 权限:

mysql> show grants;
+----------------------------------------------------------------------------------+
| Grants for gs@localhost                                                          |
+----------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'gs'@'localhost' IDENTIFIED BY PASSWORD 'somePassword'     | 
| GRANT ALL PRIVILEGES ON `gs\_%`.* TO 'gs'@'localhost'                            | 
+----------------------------------------------------------------------------------+
2 rows …
Run Code Online (Sandbox Code Playgroud)

mysql linux permissions

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