热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

关于数据库登陆名和数据库用户名的一点点心得

记得自己从开始编写与sql数据库相关的程序起,就一直采用sa登陆,也没有听人说过用户名和登陆名之间有什么关系,甚至都不知道这些东西,只知道sa权限很大,可以执行数据库中的所有东西,直至暑假,在看到某

 记得自己从开始编写与sql数据库相关的程序起,就一直采用sa登陆,也没有听人说过用户名和登陆名之间有什么关系,甚至都不知道这些东西,只知道sa权限很大,可以执行数据库中的所有东西,直至暑假,在看到某一项目在探讨关于数据库登陆权限保护时,自己才重视到了这一点。在网上查了很多资料,自己也总结了一些东西。

     首先,要认清数据库登陆名和数据库用户名之间的关系。数据库登陆名和数据库用户名是有差别的,在一个数据库中是一一相对应的关系。如果把数据库比作一个大厦,那么数据库登录名就是进入大厦的通行证,而用户名则是进入大厦房间的钥匙,如果每个房间看做是Sql数据库(大厦)的一个数据库,那么每个登陆名可以在每一个数据库中创建一个用户,如果没有创建用户,则登陆名就只能纯粹的登陆数据库,什么事情都干不了。下面就是插入数据库登录名和用户名的语句:

exec sp_addlogin '登录名','密码','选择的数据库'
exec sp_adduser '用户名','登录名'

  然后,将光把登录名和用户名添加进入数据库还不行,还要对你添加的用户名进行赋权,此时你的数据库的用户名才有用。如下代码:数据表名称指的是用户能操作的数据库的一个表格名称,

grant select,update,insert on 数据表名称  to 用户名

  这样,一个正确的用户就创建好了,现在你可以用你的登陆名和用户名操作数据库中的数据了,当然,我还查到网上说的赋予登录名的用户角色问题,如下代码:

--新增用户 
exec sp_addlogin 'test' --添加登录
exec sp_grantdbaccess N'test' --使其成为当前数据库的合法用户
exec sp_addrolemember N'db_owner', N'test' --授予对自己数据库的所有权限

  这是网上搜索到的一个添加用户的密码,虽然自己没有去试过,但感觉上面的那两个存储过程用起来还是比较简单一点,而且赋予权限更清晰,下面的sp_addrolemember,我查过帮助文档,确实有很多说明数据库角色的,但总感觉没有grant语句来的详细。

另外还附上平常用的比较多的关于数据库用户权限的语句:

--查看所有用户
exec sp_helpuser
--查看某用户的权限
exec sp_helprotect @username='用户名'
--查询某数据库中的所有表格
select name from sysobjects where xtype='u'
--删除用户名和登陆名的存储过程
exec sp_droplogin '登录名'
exec sp_dropuser '用户名'

推荐阅读
author-avatar
许小懿_336
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有