热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在mongodb上不能使用PHP进行身份验证吗?-Can'tauthenticateonmongodbwithPHP

Whativedone:我所做的:Enabledauthenticationinetcmongod.conf:在etcmongod.启用身份验证配置:autht

What i've done:

我所做的:

Enabled authentication in /etc/mongod.conf :

在/etc/mongod.启用身份验证配置:

auth = true

Created the first user from the shell as stated in the doc :

如doc所述,从shell中创建第一个用户:

db.createUser(
{
    user: "admin",
    pwd: "admin",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})

Using the admin user, i've created a root user to access mongodb:

使用admin用户,我创建了一个根用户来访问mongodb:

db.createUser(
{
    user: "root",
    pwd: "root",
    roles: [ "root" ]
})

Until this point all works fine, as i can authenticate from the mongo shell with:

在此之前,一切正常,我可以从mongo shell通过以下身份验证:

mongo --port 27017 -u root -p root  admin

and it works perfectly, as i can make all operations in the db.

它工作得很好,因为我可以在db中进行所有操作。

The problem:

存在的问题:

when i try to authenticate from PHP using the same root user:

当我尝试使用相同的根用户从PHP进行身份验证时:

$client = new MongoClient("mongodb://root:root@localhost:27017/admin");

It gives the error:

这给了错误:

Failed to connect to: localhost:27017: Authentication failed on database 'admin' with username 'root': auth failed

未能连接到:localhost:27017:用户名“root”的数据库“admin”的身份验证失败

Why can't PHP authenticate on mongodb if authenticating with the same credentials works fine from the mongo shell?

如果在mongo shell中使用相同的凭证进行身份验证,为什么PHP不能在mongodb上进行身份验证呢?

Other notes:

另注:

  • If I disable authentication PHP connects perfectly, and the mongo classes work fine
  • 如果我禁用身份验证,PHP就能完美连接,mongo类也能正常工作
  • I've tried to create different users, but the response is the same
  • 我尝试过创建不同的用户,但是响应是相同的
  • I am using Mongo 3.0.1, PHP 5.5.9 and Ubuntu 14.04.2 LTS 64bit
  • 我正在使用Mongo 3.0.1, PHP 5.5.9和Ubuntu 14.04.2 LTS 64位

3 个解决方案

#1


20  

Problem solved: apparenty it was caused by a problem/bug in the PHP mongo driver version 1.4

问题解决:很明显,它是由PHP mongo驱动程序1.4中的一个问题/bug引起的

I've upgraded the driver to version 1.6 with:

我已经将驱动升级到1.6版本:

pecl upgrade mongo

and now the authentication works.

现在认证工作了。

#2


2  

I've had the same problem, in my case I've installed mongo using apt-get

我也遇到过同样的问题,我用apt-get安装了mongo

apt-get install php5-mongo

And seems that Ubuntu repositories has still the version 1.4 and hasn't updated the package yet. If you want to install mongo on Ubuntu you should use the pecl option

看起来Ubuntu存储库仍然有1.4版本,并且还没有更新包。如果你想在Ubuntu上安装mongo,你应该使用pecl选项

pecl install mongo

Never use apt-get for installing mongo for php.

永远不要使用apt-get来为php安装mongo。

#3


-1  

according to mongo installation instructions in windows versions the mongo.dll must copy to system path e.g. c:\windows. i tested that and yes it works.

根据mongo安装说明在windows版本的mongo。dll必须拷贝到系统路径,例如c:\windows。我测试了一下,确实有效。


推荐阅读
  • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
  • 目录1、将mysql数据导出到SQL文件中(数据库存在的情况)2、将现有的sql文件数据导入到数据库中(前提数据库存在) 3、利用Navicat导出SQL文件和导入SQL文件1)从 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
  • phpcomposer 那个中文镜像是不是凉了 ... [详细]
  • Postgresql备份和恢复的方法及命令行操作步骤
    本文介绍了使用Postgresql进行备份和恢复的方法及命令行操作步骤。通过使用pg_dump命令进行备份,pg_restore命令进行恢复,并设置-h localhost选项,可以完成数据的备份和恢复操作。此外,本文还提供了参考链接以获取更多详细信息。 ... [详细]
  • 本文介绍了在使用Laravel和sqlsrv连接到SQL Server 2016时,如何在插入查询中使用输出子句,并返回所需的值。同时讨论了使用CreatedOn字段返回最近创建的行的解决方法以及使用Eloquent模型创建后,值正确插入数据库但没有返回uniqueidentifier字段的问题。最后给出了一个示例代码。 ... [详细]
  • mysqldinitializeconsole失败_mysql03误删除了所有用户解决办法
    误删除了所有用户解决办法第一种方法(企业常用)1.将数据库down掉[rootdb03mysql]#etcinit.dmysqldstopShuttingdownMySQL..SU ... [详细]
  • 浅析Mysql数据回滚错误的解决方法_PHP教程:MYSQL的事务处理主要有两种方法。1、用begin,rollback,commit来实现begin开始一个事务rollback事 ... [详细]
author-avatar
qq2304944703
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有