关于数据库安全机制,胡百敬、姚巧枚编著的《Sql Server2005数据库开发详解》,讲得浅显易懂,很值得看。。
以下是我看书和做实验得出的结论,如有错误的地方还望指正。
create login tempuser with password='123'
上面这一语句只是创建了与数据库的链接,具有Sql Server分配的默认的权限。
例如其默认的数据库是master,可以在相应权限下查询master的表。但tempuser只是一个登录名,
在master的用户表里面并没有与之对应的用户,这一点是显然的。
由于tempuser默认的数据库是master,显然它并没有访问其他用户创建的数据库的权限。
如果想访问其他数据库,则要修改该登陆用户的默认数据库。
alter login tempuser with default_database=adventureworks
或
create login tempuser with password='123', default_database=Adventureworks
(注意上面语句的执行都是在master为环境的,也就是用DBA的权限执行的)
但是这样带来了一个问题,也就是用登陆用户tempuser的时候会Server抛出异常
也就是tempuser将不能再登陆Server服务器,因为它默认的数据库是adventureworks,
但数据库adventureworks里面却没有与之对应的用户,所以就不能登录了。