热门标签 | 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 '用户名'

推荐阅读
  • 利用存储过程构建年度日历表的详细指南
    本文将介绍如何使用SQL存储过程创建一个完整的年度日历表。通过实例演示,帮助读者掌握存储过程的应用技巧,并提供详细的代码解析和执行步骤。 ... [详细]
  • 本文由瀚高PG实验室撰写,详细介绍了如何在PostgreSQL中创建、管理和删除模式。文章涵盖了创建模式的基本命令、public模式的特性、权限设置以及通过角色对象简化操作的方法。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • SQL中UPDATE SET FROM语句的使用方法及应用场景
    本文详细介绍了SQL中UPDATE SET FROM语句的使用方法,通过具体示例展示了如何利用该语句高效地更新多表关联数据。适合数据库管理员和开发人员参考。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • openGauss每日一练:第6天 - 模式的创建、修改与删除
    本篇笔记记录了openGauss数据库中关于模式(Schema)的创建、修改和删除操作。通过这些操作,用户可以更好地管理和控制数据库对象。实验环境为openGauss 2.0.0,并使用由墨天轮提供的线上环境。 ... [详细]
  • 本文探讨了在Oracle数据库中,动态SQL语句的执行及其对事务管理的影响,特别是关于回滚操作的有效性。重点讨论了一个具体场景:将预警短信从当前表迁移到历史表时遇到的字段长度不匹配问题及相应的异常处理。 ... [详细]
  • 使用Pandas高效读取SQL脚本中的数据
    本文详细介绍了如何利用Pandas直接读取和解析SQL脚本,提供了一种高效的数据处理方法。该方法适用于各种数据库导出的SQL脚本,并且能够显著提升数据导入的速度和效率。 ... [详细]
author-avatar
二不-不二
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有