教你如何利用MySQL学习MongoDB之授权和权限

发表于:2011-9-08 10:04

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:王文龙    来源:51Testing软件测试网采编

  在上文中,我们了解了教你如何利用MySQL学习MongoDB之SQL语法,本文中我们继续我们的学习之旅,学习两者的授权和权限。

  数据库的安全性是每一个DBA重点关注的部分,在数据库建立之后,数据的安全就显得尤为重要。

  对于一个数据库管理员来说,安全性就意味着他必须保证那些具有特殊数据访问权限的用户能够登录到数据库服务器,并且能够访问数据以及对数据库对象实施各种权限范围内的操作;同时,DBA还要防止所有的非授权用户的非法操作。

  1、MySQL授权和权限

  MySQL中有两种级别的权限:管理和用户。所有权限都可分别使用 GRANT 和 REVOKE 语句授予和收回。可以授予用户create、select、update、delete、insert、execute、index 等权限,也可授予alter、drop和shutdown等系统权限。根用户root在默认情况下具有所有权限。

  2、MongoDB授权和权限

  官方文档开启MongoDB 服务时不添加任何参数时,可以对数据库任意操作,而且可以远程访问数据库,所以推荐只是在开发是才这样不设置任何参数。如果启动的时候指定--auth参数,可以从阻止根层面上的访问和连接

  (1)只允许某ip访问

  mongod --bind_ip 127.0.0.1

  (2)指定服务端口

  mongod --bind_ip 127.0.0.1 --port27888

  (3)添加用户认证

  mongod --bind_ip 127.0.0.1 --port27888 –auth

  (4)添加用户

  在刚安装完毕的时候MongoDB都默认有一个admin数据库,而admin.system.users中将会保存比在其它数据库中设置的用户权限更大的用户信息。

  当admin.system.users中一个用户都没有时,即使mongod启动时添加了--auth参数,如果没有在admin数据库中添加用户,此时不进行任何认证还是可以做任何操作,直到在admin.system.users中添加了一个用户。

  下面分别创建两个用户, 在foo中创建用户名为user1密码为pwd1的用户,如下:

  • [root@localhost bin]# ./mongo --port 27888  
  • MongoDB shell version: 1.8.1   
  • connecting to: test   
  • > use foo   
  • switched to db foo   
  • > db.addUser("user1","pwd1")   
  • {   
  • "user" : "user1",   
  • "readOnly" : false,   
  • "pwd" : "35263c100eea1512cf3c3ed83789d5e4"   
  • }
  •   在admin中创建用户名为root密码为pwd2的用户,如下:

  • > use admin   
  • switched to db admin   
  • > db.addUser("root""pwd2")   
  • {   
  • "_id" : ObjectId("4f8a87bce495a88dad4613ad"),   
  • "user" : "root",   
  • "readOnly" : false,   
  • "pwd" : "20919e9a557a9687c8016e314f07df42"   
  • }   
  • > db.auth("root""pwd2")   
  • 1   
  • >
  •   如果认证成功会显示1,用以下命令可以查看特定的数据库的用户信息:

  • > use admin   
  • switched to db admin   
  • > db.system.users.find();   
  • "_id" : ObjectId("4f8a87bce495a88dad4613ad"), "user" : "root""readOnly" : false"pwd" : "20919e9a557a9687c8016e314f07df42" }   
  • > use foo   
  • switched to db foo   
  • > db.system.users.find();   
  • "_id" : ObjectId("4f92966d77aeb2b2e730c1bb"), "user" : "user1""readOnly" : false"pwd" : "35263c100eea1512cf3c3ed83789d5e4" }   
  • >
  • 21/212>
    《2023软件测试行业现状调查报告》独家发布~

    关注51Testing

    联系我们

    快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

    法律顾问:上海兰迪律师事务所 项棋律师
    版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
    投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

    沪ICP备05003035号

    沪公网安备 31010102002173号