我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何利用MySQL学习MongoDB中的授权和权限

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何利用MySQL学习MongoDB中的授权和权限

如何利用MySQL学习MongoDB中的授权和权限,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

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

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

  对于一个数据库管理员来说,安全性就意味着他必须保证那些具有特殊数据访问权限的用户能够登录到数据库服务器,并且能够访问数据以及对数据库对象实施各种权限范围内的操作;同时,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_ip127.0.0.1

  (2)、指定服务端口

  mongod--bind_ip127.0.0.1--port27888

  (3)、添加用户认证

  mongod--bind_ip127.0.0.1--port27888–auth

  (4)、添加用户

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

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

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

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

  [chinastor.com-root@localhostbin]#./mongo--port27888MongoDBshellversion:1.8.1connectingto:test>usefooswitchedtodbfoo>db.addUser("user1","pwd1"){"user":"user1","readOnly":false,"pwd":"35263c100eea1512cf3c3ed83789d5e4"}

  www.itjs.cn

  在admin中创建用户名为root密码为pwd2的用户,如下:www.itjs.cn

  >useadminswitchedtodbadmin>db.addUser("root","pwd2"){"_id":ObjectId("4f8a87bce495a88dad4613ad"),"user":"root","readOnly":false,"pwd":"20919e9a557a9687c8016e314f07df42"}>db.auth("root","pwd2")1>

  如果认证成功会显示1,用以下命令可以查看特定的数据库的用户信息:www.itjs.cn

  >useadminswitchedtodbadmin>db.system.users.find();{"_id":ObjectId("4f8a87bce495a88dad4613ad"),"user":"root","readOnly":false,"pwd":"20919e9a557a9687c8016e314f07df42"}>usefooswitchedtodbfoo>db.system.users.find();{"_id":ObjectId("4f92966d77aeb2b2e730c1bb"),"user":"user1","readOnly":false,"pwd":"35263c100eea1512cf3c3ed83789d5e4"}>

  下面我们试验一下用户的权限设置是否正确:www.itjs.cn

  [chinastor.com-root@localhostbin]#./mongo--port27888MongoDBshellversion:1.8.1connectingto:127.0.0.1:27888/test>usefooswitchedtodbfoo>db.system.users.find();error:{"$err":"unauthorizeddb:foolocktype:-1client:127.0.0.1","code":10057}>useadminswitchedtodbadmin>db.system.users.find();error:{"$err":"unauthorizeddb:adminlocktype:-1client:127.0.0.1","code":10057}>

  通知以上实验结果,说明登录时不指定用户名和口令时会报错,也就是说安全性的部署生效了。下面我再看一下另一个场景:

  [chinastor.com-root@localhostbin]#./mongo--port27888-uroot-ppwd2MongoDBshellversion:1.8.1connectingto:127.0.0.1:27888/testSatApr2119:23:15uncaughtexception:loginfailedexception:loginfailed

  奇怪了,我们明明指定了用户名而且口令也没有错呀,这时我们看一下系统日志上是否有一些有价值的信息:

  auth:couldn'tfinduserroot,test.system.users

  哦,原来是这样,说明连接mongodb时,如果不指定库名,那么会自动连接到test库,但刚才我们新建的用户,都不是在test库上建立的,所以我们需要显示指定需要连接的库名:

  [chinastor.com-root@localhostbin]#./mongo--port27888admin-uroot-ppwd2MongoDBshellversion:1.8.1connectingto:127.0.0.1:27888/admin>showcollections;system.indexessystem.users>usefooswitchedtodbfoo>showcollectionssystem.indexessystem.userst1>

  看到的是root这个用户有所有库的操作权限,那么user1这个用户有什么权限呢我们一试便知:

  [chinastor.com-root@localhostbin]#./mongo--port27888foo-uuser1-ppwd1MongoDBshellversion:1.8.1connectingto:127.0.0.1:27888/foo>showcollections;system.indexessystem.userst1>usetestswitchedtodbtest>showcollectionsSatApr2119:28:25uncaughtexception:error:{"$err":"unauthorizeddb:testlocktype:-1client:127.0.0.1","code":10057}>

  通过结果我们看到,由于user1是在foo库里建立的用户,所以它不具有操作其它数据库,甚至是test库的权限。

看完上述内容,你们掌握如何利用MySQL学习MongoDB中的授权和权限的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何利用MySQL学习MongoDB中的授权和权限

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL如何设置用户权限和授权

在MySQL中,可以使用GRANT语句来设置用户权限和授权。以下是一些常见的示例:授权用户访问数据库:GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'
MySQL如何设置用户权限和授权
2024-04-09

Linux中如何对用户授权和移除sudo权限

小编给大家分享一下Linux中如何对用户授权和移除sudo权限,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!如你所知,用户可以在 Ubuntu 系统上使用 sud
2023-06-27

如何在PostgreSQL中创建用户和授予权限

要在PostgreSQL中创建用户并授予权限,可以按照以下步骤操作:以超级用户身份连接到PostgreSQL数据库:sudo -u postgres psql创建新用户:CREATE ROLE new_user WITH LOGIN PAS
如何在PostgreSQL中创建用户和授予权限
2024-04-09

MySQL如何利用DCL管理用户和控制权限

DCL(Data Control Language):数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户。 一、管理用户1、创建用户-- 创建用户 CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码
2022-05-30

介绍如何在 MySQL 中创建新用户并授予权限?

MySQL 是一个开源的关系型数据库管理系统,常用于存储和管理大量的结构化数据。在使用 MySQL 进行数据管理时,为了安全和方便管理,通常需要创建新用户并授予相应的权限。本文将介绍如何在 MySQL 中创建新用户并授予权限的方法。 创建
2023-08-21

如何实现MySQL中授权用户的语句?

如何实现MySQL中授权用户的语句?MySQL是一种广泛使用的关系型数据库管理系统,通过使用授权语句,可以控制用户对数据库的访问权限。在本文中,将介绍如何通过具体的代码示例来实现MySQL中授权用户的语句。在MySQL中,可以使用GRANT
如何实现MySQL中授权用户的语句?
2023-11-08

MySQL中如何限制用户权限和访问控制

在MySQL中,可以通过以下几种方法限制用户权限和访问控制:使用GRANT语句授予或撤销用户权限。GRANT语句允许管理员为用户分配特定的权限,如SELECT、INSERT、UPDATE、DELETE等。通过REVOKE语句可以撤销用户的权
MySQL中如何限制用户权限和访问控制
2024-03-06

如何实现MySQL中授权用户角色的语句?

在MySQL数据库中,用户需要授予特定的权限来访问和操作数据库中的对象,例如表、视图、存储过程等等。对于大型数据库系统,管理和维护访问和权限变得非常困难,因此引入了用户角色概念。在本文中,我们将介绍如何在MySQL数据库中实现授权用户角色的
如何实现MySQL中授权用户角色的语句?
2023-11-09

nginx、php-fpm和mysql的用户权限如何配置

这篇文章主要介绍了nginx、php-fpm和mysql的用户权限如何配置的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇nginx、php-fpm和mysql的用户权限如何配置文章都会有所收获,下面我们一起来看
2023-07-02

如何处理PHP开发中的用户认证和授权

随着互联网的快速发展,网站和应用程序的用户认证和授权变得越来越重要。对于PHP开发者来说,确保用户的身份验证和权限管理是至关重要的。本文将介绍PHP开发中的用户认证和授权的基本概念,并提供具体的代码示例,以帮助读者更好地理解和实践。用户认证
2023-10-21

如何在MySQL中设置用户权限和访问控制

在MySQL中,要设置用户权限和访问控制,可以使用GRANT和REVOKE语句。以下是如何在MySQL中设置用户权限和访问控制的步骤:连接到MySQL服务器:使用MySQL客户端连接到MySQL服务器。创建用户:如果要为新用户设置权限,首先
如何在MySQL中设置用户权限和访问控制
2024-04-09

编程热搜

目录