关于数据库用户权限问题

seuer126 2013-01-09 03:15:38
我们一个用户想通过远程管理他们的数据库,远程连接成功之后,但是能看到别人的数据库,虽然点击就提示权限不足。如图,但我只能想他看到自己的数据库,看不到别人的数据库。
请问该如何赋予数据库用户权限才能实现我想达到的效果。
...全文
373 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
seuer126 2013-01-16
  • 打赏
  • 举报
回复
恩,小弟明白了,谢谢DBA_Huangz和zc10151。 结贴了!!
KevinLiu 2013-01-13
  • 打赏
  • 举报
回复
引用 12 楼 zc10151 的回复:
引用 10 楼 seuer126 的回复:我设置了 拒绝“查看任意定义“ 的确看不到别人的数据库了,谢谢你们啊。但是也无法看到自己的数据库了,我的目标是我们上面那个spring数据库和相关的表也在下图中”数据库“到那就更好了 楼主,打开数据库下拉列表时,SQL内部是整表查询sys.databases的,所以应该是实现不了对个别指定库做显示的功能,要么全部显示,要么全……
顶一下
Paddy 2013-01-12
  • 打赏
  • 举报
回复
引用 10 楼 seuer126 的回复:
我设置了 拒绝“查看任意定义“ 的确看不到别人的数据库了,谢谢你们啊。但是也无法看到自己的数据库了,我的目标是我们上面那个spring数据库和相关的表也在下图中”数据库“到那就更好了
楼主,打开数据库下拉列表时,SQL内部是整表查询sys.databases的,所以应该是实现不了对个别指定库做显示的功能,要么全部显示,要么全部不显示 当禁用查看任意定义权限后,执行
select * from sys.databases
结果只有master 和 tempdb,和实际显示的列表吻合。反之会输出全部数据库列表。 其实知道了SQL是通过sys.databases的原理,也可以通过禁用deny select on sys.databases to user来更大程度的收缩权限。
發糞塗牆 2013-01-11
  • 打赏
  • 举报
回复
权限分两级(当然细化起来不止),一个是服务器级别,一个是数据库级别。服务器级别尽可能不要给客户动,所以赋予public就可以了,这样ta就没权限动SQLServer实例级别的东西,然后精确到ta们的数据库,你要是想省事,那就给ta们db_onwer的权限,这样ta们的活动范围就限制在这个库了。如果要更细化地分权限,比如只允许ta们读但不能写,那给datareader就可以了。
發糞塗牆 2013-01-11
  • 打赏
  • 举报
回复
就是你希望那个账号能访问的库咯。 我们一个用户想通过远程管理他们的数据库——指的就是这个库。
seuer126 2013-01-11
  • 打赏
  • 举报
回复
引用 3 楼 DBA_Huangzj 的回复:
你把那个账号的默认数据库设成你希望他仅仅能访问的那个库即可,权限低一点就给datareader,高一点就给dbo就可以了。另外服务器级别的权限只给public
请问你说的“库”是什么意思???
seuer126 2013-01-11
  • 打赏
  • 举报
回复
这个问题搞好了,我就结贴了!
seuer126 2013-01-11
  • 打赏
  • 举报
回复
我设置了 拒绝“查看任意定义“ 的确看不到别人的数据库了,谢谢你们啊。但是也无法看到自己的数据库了,我的目标是我们上面那个spring数据库和相关的表也在下图中”数据库“到那就更好了
Paddy 2013-01-11
  • 打赏
  • 举报
回复
引用 5 楼 DBA_Huangzj 的回复:
引用 4 楼 zc10151 的回复:可以不让查看全部数据库,但是可以操作有权限的库,在服务器状态->权限->拒绝“查看任意定义” 这样的话账号可以用TSQL语句,但是图形化是看不到任意数据库的。服务器状态在哪里看啊?那直接deny view比较块。
是的 VIEW ANY DEFINITION 可以 因为查看数据库列表应该是作用在服务器权限级别,所以要么能全部查看,要么就全部不能查看 在服务器作用域内,该权限名称为 VIEW ANY DEFINITION,但在其他作用域内,该权限名称为 VIEW DEFINITION。
發糞塗牆 2013-01-10
  • 打赏
  • 举报
回复
引用 4 楼 zc10151 的回复:
可以不让查看全部数据库,但是可以操作有权限的库,在服务器状态->权限->拒绝“查看任意定义” 这样的话账号可以用TSQL语句,但是图形化是看不到任意数据库的。
服务器状态在哪里看啊?那直接deny view比较块。
Paddy 2013-01-10
  • 打赏
  • 举报
回复
可以不让查看全部数据库,但是可以操作有权限的库,在服务器状态->权限->拒绝“查看任意定义” 这样的话账号可以用TSQL语句,但是图形化是看不到任意数据库的。
發糞塗牆 2013-01-09
  • 打赏
  • 举报
回复
你把那个账号的默认数据库设成你希望他仅仅能访问的那个库即可,权限低一点就给datareader,高一点就给dbo就可以了。另外服务器级别的权限只给public
seuer126 2013-01-09
  • 打赏
  • 举报
回复
引用 1 楼 DBA_Huangzj 的回复:
SQLServer实现不了“隐藏”数据库功能,别想了,只要给他默认登录时是自己的库,且无法访问别的库即可。
库? 请问这个怎么实现的,麻烦LS跟我我讲一下吧,谢谢了
發糞塗牆 2013-01-09
  • 打赏
  • 举报
回复
SQLServer实现不了“隐藏”数据库功能,别想了,只要给他默认登录时是自己的库,且无法访问别的库即可。

27,581

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧