怎么设置SQL Server的用户及权限

举报 回答
怎么设置SQL Server的用户及权限
问在线客服
扫码问在线客服
  • 回答数

    5

  • 浏览数

    7,434

举报 回答

5个回答 默认排序
  • 默认排序
  • 按时间排序

没找到满意答案?去问豆包AI智能助手
取消 复制问题
已采纳
1

-- SQLServer:

一、操作步骤
首先进入数据库级别的【安全性】-【登录名】-【新建登录名】

(图1:新建登录名)
2. 在【常规】选项卡中,如下图所示,创建登陆名,并设置默认的数据库。

(图2:设置选项)
3. 在【用户映射】选项卡中,如下图所示,勾选需要设置的数据库,并设置【架构】,点击【确认】按钮,完成创建用户的操作

(图3:选择对应数据库)
4. 现在我们就可以对TestLog数据库中的User表进行权限的设置了,【表】-【 属性】

(图4:选择对应表)
5. 在【权限】选项卡中,如下图所示,依此点击【添加】-【浏览】-【选择对象】

(图5:设置访问表的用户)
6. 在上面点击【确认】后,我们就可以下面的列表中找到对应的权限,如果你还想细化到列的权限的话,右下角还有一个【列权限】的按钮可以进行设置,点击【确认】按钮就完成了这些权限的设置了

(图6:权限列表)
7. 现在就使用TestUser用户登陆数据库了,登陆后如下图所示,现在只能看到一个表了

(图7:效果)

二、注意事项
在上面的第3步骤中需要注意:如果这里没有选择对应的数据库的话,之后去TestLog数据库中是找不到TestUser。

(图8:找不到TestUser用户)
2. 在上面的第3步骤,设置完TestLog数据后,需要点击【确认】按钮,完成创建用户操作,如果这个时候去设置【安全对象】,是无法在【添加】-【特定对象】-【对象类型】-【登陆名】-【浏览】中找到刚刚新建的TestUser用户的。
3. 其实在数据库级别的【安全性】创建的用户是属于全局的,当设置了某个数据库,比如TestLog之后,这个用户就会出现在这个数据库的【安全性】列表中。 如果删除TestLog这个用户,会出现下面的提示。删除了后,这个用户就无法登陆了。需要去对应的数据库中删除用户,如果没有删除又创建,是会报错的。

(图9:删除TestUser用户)
4. 在第6步的【显式权限】列表中,如果选择了【Control】这个选项,那么在【Select】中设置查询【列权限】就没有意义了,查询就不会受限制了。如果设置【列权限】,在正常情况下会显示下图的报错信息:

(图10:效果)
5. 在TestLog数据库的【安全性】-【TestUser】-【属性】-【安全对象】-【添加】-【对象类型】这里有更多关于数据库级别的一些对象类型可以设置。

(图11:其它对象类型)
取消 评论
win xp 目前只能安装sql server2000的个人版本。虽然据说安装了sp2补丁后可以安装 所有版本的SQL 但几乎所有人都建议不要用 XP 做服务器。
取消 评论
  1、首先创建一个账号和一个数据库并添加这个用户为这个数据库的使用者。
  [xhtml] view plaincopy
  USE MASTERGO
  CREATE LOGIN test_user WITH PASSWORD = 'test_user_pwd';GO
  CREATE DATABASE DenySelectStar;GO
  USE DenySelectStarGO
  CREATE USER test_user FROM LOGIN test_user WITH DEFAULT_SCHEMA = DenySelectStar;GO
  EXEC sp_addrolemember N'db_datareader', N'test_user'GO

  2、再创建一个新表,并命名一列为dummycolumn,并插入几条数据:
  [xhtml] view plaincopy
  CREATE TABLE dbo.Table_1( IdentityKey INT IDENTITY(1,1) PRIMARY KEY CLUSTERED ,ColumnOne INT NULL ,DummyColumn CHAR(1) NULL);GO
  INSERT INTO dbo.Table_1 (ColumnOne) SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5;GO
  DENY SELECT ON OBJECT:: dbo.Table_1(DummyColumn) TO test_user;GO

  3、再去查询一下select * from :
  [xhtml] view plaincopy
  USE DenySelectStarGO
  SELECT * FROM dbo.Table_1;
  --Result
  Msg 230, Level 14, State 1, Line 1The SELECT permission was denied on the column 'DummyColumn' of the object 'Table_1, database 'DenySelectStar', schema 'dbo'.
取消 评论
package com.yong;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class Test2 {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

Connection con = null;
PreparedStatement ps = null;
boolean flag = false;

try {
Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);
con = DriverManager.getConnection(jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=TestOracle,sa,sqlserver2000);
ps = con.prepareStatement(create table sdf(name nvarchar(30)));
flag = ps.execute();
System.out.println(flag);//这里为什么是false
if(flag) {

System.out.println(创建成功);

} else {

System.out.println(创建失败);
}

} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {

try {
if(ps != null) ps.close();
if(con != null) con.close();

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

}
取消 评论
REVOKE SELECT ON TABLE_NAME FROM USER_NAME
取消 评论
ZOL问答 > 怎么设置SQL Server的用户及权限

举报

感谢您为社区的和谐贡献力量请选择举报类型

举报成功

经过核实后将会做出处理
感谢您为社区和谐做出贡献

扫码参与新品0元试用
晒单、顶楼豪礼等你拿

扫一扫,关注我们
提示

确定要取消此次报名,退出该活动?