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


         记得自己从开始编写与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 '用户名'

      

  • 相关阅读:
    正则表达式--验证中国手机号
    PostgreSQ数据库安全连接请求问题
    golang时间正反格式化
    Git 分支管理和冲突解决
    golang交叉编译
    ps命令
    Redis应用场景
    SecureCRT for Mac
    Redis作者谈Redis应用场景
    redis 五种数据的应用场景
  • 原文地址:https://www.cnblogs.com/zjw112/p/2136612.html
Copyright © 2020-2023  润新知