作为此处描述的过程的一部分,我正在按照此处的 MS 文档将登录名从 SQL Server 的一个实例迁移到另一个实例。这涉及将服务器置于单用户模式(我已经完成),然后运行脚本等。
但是,在单用户模式下(仅运行 SqlServer 服务)重新启动后,我无法使用我的 Windows 帐户或sa凭据登录。我收到错误:
Failed to connect to <servername>
Login failed for user 'sa'. Reason: Server is in single user mode.
Only one administrator can connect at this time. (Microsoft SSQL Server, Error: 18461)
Run Code Online (Sandbox Code Playgroud)
正常重启服务器(即多用户模式)后,所有登录工作正常。
谁能解释发生了什么和/或如何纠正这个问题?
我创建了两个数据库,第二个数据库中的一个表和第一个数据库中的一个存储过程。存储过程跨数据库访问表。我创建了一个 sql server 登录名,并将此登录名映射到每个数据库中的一个用户。我向用户授予 db_owner 权限。这是完成它的脚本(我在运行脚本时作为 SQL 系统管理员连接):
USE [master]
GO
CREATE DATABASE [TestDatabase1] ON PRIMARY
( NAME = N'TestDatabase1', FILENAME = N'd:\database\TestDatabase1.mdf' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N'TestDatabase1_log', FILENAME = N'd:\database\TestDatabase1_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO
CREATE DATABASE [TestDatabase2] ON PRIMARY
( NAME = N'TestDatabase2', FILENAME = N'd:\database\TestDatabase2.mdf' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB …Run Code Online (Sandbox Code Playgroud) 我向我们的 SQL Server 2008 R2 数据库添加了一个 Active Directory 组作为 Windows 身份验证登录。
当属于该组成员的用户尝试连接到服务器时,会出现登录失败错误。如果我添加他的特定用户名作为登录名,他就可以连接了。
我是否应该能够添加一个 Active Directory 组以允许该组中的用户进行连接?与单独管理特定用户相比,这似乎更受欢迎。
SELECT @@version;
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64)
Run Code Online (Sandbox Code Playgroud) SQL Server 2008 R2 SP1
我的公司使用具有多种自定义功能的 Great Plains (GP) 财务系统。我们的 GP 增值经销商 (VAR) 已在名为DYNCUSTOM.
在DYNCUSTOM数据库一种观点认为,仅仅是SELECT * FROM在GP公司数据库(称为表PARTS)。一位在尝试在此视图上进行选择时遇到问题的用户联系了我。
他得到的错误:
Msg 229, Level 14, State 5, Line 2
SELECT permission denied on object 'BM010415', database 'PARTS', schema 'dbo'
Run Code Online (Sandbox Code Playgroud)
我查看了他的登录名是如何映射的,他在数据库中有一个数据库用户,该用户DYNCUSTOM属于granted select视图中的数据库角色。
但是,他在数据库中没有数据库用户PARTS。
通常,视图的目的是为了在不公开对基础表的访问的情况下授予视图的选择权限。但是,对于 SQL Server,如果视图跨数据库,它是否会更改正在使用的安全上下文?因此,用户是否还需要数据库中的数据库用户PARTS以及授予对基础表的选择访问权限?
使用xp_cmdshell可能会很有帮助,有时可能是某些场景的唯一答案。我在互联网上阅读了一些帖子,认为启用xp_cmdshell可能会危及数据库/服务器的安全性。
我的问题是,我们能做些什么来降低风险吗?例如,我们是否可以设置一些限制/应用用户角色等,以提供降低风险的保障措施?
谢谢。
我在 Azure 虚拟机上运行 SQL Server。我在服务器的事件日志中注意到许多失败的 SQL 登录尝试使用大量不同的用户名(都不存在):
用户 'kisadminnew1' 登录失败。原因:找不到与提供的名称匹配的登录名。[客户:124.117.233.94]
用户“djapple”登录失败。原因:找不到与提供的名称匹配的登录名。[客户:124.117.233.94]
用户“中国”登录失败。原因:找不到与提供的名称匹配的登录名。[客户:124.117.233.94]
用户 'vice' 登录失败。原因:找不到与提供的名称匹配的登录名。[客户:124.117.233.94]
总之,一夜之间可能同时进行了数百次随机尝试。
我应该担心这个吗?看起来是否有人试图通过蛮力访问我的 SQL Server,这是否常见?
我希望为 MySQL 中的密码重置生成一个加密安全的字符串。我知道我可以在 PHP 的应用程序级别执行此操作;但这需要我的许多客户可能没有的 OpenSSL 扩展。
如果我能以一种广泛可用的安全方式在 MySQL 5 中做到这一点,那将是理想的。这可能吗?
注意:这是为了生成密码重置的安全令牌。它与安全连接没有任何关系,因此使用 https 不是解决方案。
SQL Server 用户的设置之一是DEFAULT_SCHEMA. 这是经常dbo但并非总是如此。我意识到您可以使用以下代码更改设置:
ALTER USER [UserName] WITH DEFAULT_SCHEMA = [SchemaName]
Run Code Online (Sandbox Code Playgroud)
据我所知,无论何时我创建 aUSER并且不指定DEFAULT_SCHEMA它使用的 a dbo。但我仍然发现USERS它具有不同的默认架构。
如果我没记错的话,当您有一个从 SQL 2000 升级的实例时,默认架构是与用户名匹配的架构。我猜这就是我所看到的大部分(如果不是全部)的来源。
有没有其他方法可以在USER不指定的情况下创建 aDEFAULT_SCHEMA并使用除 之外的其他内容创建它dbo?
注意:这适用于 SQL Server 2005 及更高版本。
我将开始道歉,因为这是我的第一篇文章,并查看其他与我自己的情况不太匹配的问题,而且我是一名系统管理员,而不是 DBA,所以我对 SQL 的理解是生疏和有限的。
我的组织经常遇到供应商,他们为了运行他们的应用程序,他们执行我们所说的惰性编程并请求 SA 凭据或要求他们的自定义帐户具有系统管理员权限。我的组织也有数据保护/合规政策,要求我们仅授予所需的访问权限和权利。
最近,我与之合作的一个供应商希望他们的帐户是系统管理员,但它实际上只需要访问一个数据库。如果我们给 AD 帐户(因为他们的应用程序仅适用于 Windows 身份验证)系统管理员权限,我可以使用应用程序的 GUI 来浏览和选择数据库,但如果我们只将同一帐户设置为 DBOwner,我们将找不到任何东西。
有没有办法确定它是否正在尝试轮询其他数据库或确定所需数据库所需的最低权限级别是什么?当我尝试询问供应商时,我被告知:“它需要系统管理员权限,但没关系,因为它只访问一个数据库。” 当涉及到我们的政策时,这是不行的。
感谢您的任何建议。
security ×10
sql-server ×6
azure-vm ×1
encryption ×1
logins ×1
logs ×1
mysql ×1
mysql-5 ×1
permissions ×1
schema ×1
sysdba ×1
windows ×1
xp-cmdshell ×1