用户将其他用户授予为自己数据库的用户sql sever
时间: 2024-02-25 22:55:31 浏览: 59
如果您想将其他用户授权为您的 SQL Server 数据库用户,则可以使用以下步骤:
1. 首先,您需要使用具有足够权限的登录名连接到 SQL Server 实例。
2. 然后,创建一个新的 SQL Server 登录名,或者使用现有的登录名。例如,以下命令创建一个新的登录名 "newuser":
```
CREATE LOGIN newuser WITH PASSWORD = 'mypassword';
```
3. 接下来,将该登录名分配给一个数据库用户。例如,以下命令将 "newuser" 分配为数据库 "mydatabase" 的用户:
```
USE mydatabase;
CREATE USER newuser FOR LOGIN newuser;
```
4. 然后,您需要授予该用户所需的权限。例如,以下命令授予 "newuser" 对 "mytable" 表的 SELECT 权限:
```
GRANT SELECT ON mytable TO newuser;
```
5. 最后,您可以使用以下命令检查该用户的权限:
```
EXEC sp_helprotect NULL, 'newuser';
```
这些步骤将使您能够将其他用户授权为您的 SQL Server 数据库用户。请注意,授予权限时需要谨慎,以确保用户只能访问他们需要的数据和操作。
相关问题
Sqlsever创建用户,授予查询权限
在SQL Server中,创建用户并为其授予查询权限通常涉及以下几个步骤:
1. **创建用户**:
- 使用`CREATE LOGIN`命令创建新的登录名,例如:
```sql
CREATE LOGIN [username] WITH PASSWORD = 'password';
```
- 如果需要将该用户关联到数据库角色(如dbo),可以使用`ALTER ROLE`命令:
```sql
ALTER ROLE [db_role] ADD MEMBER [username];
```
2. **创建数据库角色** (如果尚未存在):
- 对于特定的数据库操作权限,你可以创建自定义的角色:
```sql
CREATE DATABASE ROLE [custom_role];
```
3. **为用户授予查询权限**:
- 使用`GRANT`命令为用户授予权限,这里指定对特定数据库对象的SELECT权限:
```sql
GRANT SELECT ON SCHEMA::[schema_name] TO [username]; -- 授予查询整个 schema 的权限
GRANT SELECT ON [table_name] TO [username]; -- 或者只针对某个表
```
- 如果你想给用户在整个数据库上的查询权限,可以使用`EXEC sp_addrolemember`:
```sql
EXEC sp_addrolemember 'db_datareader', [username]; -- 数据读者角色允许查询数据
```
4. **验证权限**:
- 使用`EXEC sp_helpPermission`检查用户是否已获得所需的查询权限。
注意:记得始终谨慎处理用户的权限,避免过度授权导致安全风险。
12. 在sqlsever中 创建数据库db13,切换至db13数据库,在其中创建sch架构 创建login13登录账号,口令为123456,默认数据库为db13。创建user13数据库用户,其默认架构为sch。 使得以上user13数据库用户在连接db13数据库后可以创建t表。 验证user13用户对其所建t表并未拥有增删查改权限,要使得以上user13用户可以对t表执行增删查改。 要使得以上user13用户可以对t表添加一新列。创建ltian登录帐号,口令为tiantian,默认数据库为db13。使得ltian帐号登录服务器并连接db13数据库后,能够查询user13用户所建t表。使用合适的字典视图,查询以上两个登录帐号及其对应的数据库用户各自拥有的权限。验证对public数据库角色授予某个权限后,所有的数据库用户都会具备此权限。
以下是sql server中的命令行操作,可以按照需求进行修改:
1. 创建数据库db13:
```
CREATE DATABASE db13;
```
2. 切换至db13数据库:
```
USE db13;
```
3. 在db13中创建sch架构:
```
CREATE SCHEMA sch;
```
4. 创建login13登录账号,口令为123456,默认数据库为db13:
```
CREATE LOGIN login13 WITH PASSWORD = '123456', DEFAULT_DATABASE = db13;
```
5. 创建user13数据库用户,其默认架构为sch,并赋予其在sch架构下的CREATE TABLE权限,使得user13数据库用户在连接db13数据库后可以创建t表:
```
CREATE USER user13 FOR LOGIN login13 WITH DEFAULT_SCHEMA = sch;
GRANT CREATE TABLE ON SCHEMA::sch TO user13;
```
6. 验证user13用户对其所建t表并未拥有增删查改权限,要使得以上user13用户可以对t表执行增删查改:
```
--验证user13用户对其所建t表并未拥有增删查改权限
SELECT * FROM sys.database_permissions WHERE grantee_principal_name = 'user13';
--使得user13用户可以对t表执行增删查改
GRANT SELECT, INSERT, UPDATE, DELETE ON sch.t TO user13;
```
7. 要使得以上user13用户可以对t表添加一新列:
```
ALTER TABLE sch.t ADD new_column INT;
GRANT ALTER ON sch.t(new_column) TO user13;
```
8. 创建ltian登录帐号,口令为tiantian,默认数据库为db13:
```
CREATE LOGIN ltian WITH PASSWORD = 'tiantian', DEFAULT_DATABASE = db13;
```
9. 使得ltian帐号登录服务器并连接db13数据库后,能够查询user13用户所建t表:
```
CREATE USER ltian FOR LOGIN ltian;
GRANT SELECT ON sch.t TO ltian;
```
10. 使用合适的字典视图,查询以上两个登录帐号及其对应的数据库用户各自拥有的权限:
```
--查询login13登录账号及其对应的数据库用户权限
SELECT p.permission_name, p.state_desc, p.class_desc, OBJECT_NAME(p.major_id) AS object_name, USER_NAME(p.grantee_principal_id) AS grantee_user, USER_NAME(p.grantor_principal_id) AS grantor_user
FROM sys.database_permissions p
INNER JOIN sys.database_principals dp ON p.grantee_principal_id = dp.principal_id
WHERE dp.name = 'login13';
--查询user13数据库用户权限
SELECT p.permission_name, p.state_desc, p.class_desc, OBJECT_NAME(p.major_id) AS object_name, USER_NAME(p.grantee_principal_id) AS grantee_user, USER_NAME(p.grantor_principal_id) AS grantor_user
FROM sys.database_permissions p
INNER JOIN sys.database_principals dp ON p.grantee_principal_id = dp.principal_id
WHERE dp.name = 'user13';
--查询ltian登录账号及其对应的数据库用户权限
SELECT p.permission_name, p.state_desc, p.class_desc, OBJECT_NAME(p.major_id) AS object_name, USER_NAME(p.grantee_principal_id) AS grantee_user, USER_NAME(p.grantor_principal_id) AS grantor_user
FROM sys.database_permissions p
INNER JOIN sys.database_principals dp ON p.grantee_principal_id = dp.principal_id
WHERE dp.name = 'ltian';
```
11. 验证对public数据库角色授予某个权限后,所有的数据库用户都会具备此权限:
```
--授予对sch.t表的SELECT权限给public角色
GRANT SELECT ON sch.t TO public;
--验证所有的数据库用户都具备此权限
SELECT * FROM sys.database_permissions WHERE grantee_principal_name = 'public' AND OBJECT_NAME(major_id) = 't';
```
以上是sql server中进行相关操作的命令行操作,您可以根据需要进行相应的修改。
阅读全文