`
s8186255
  • 浏览: 85799 次
  • 性别: Icon_minigender_1
  • 来自: 新疆乌鲁木齐
社区版块
存档分类
最新评论

mongodb3 与rails的连接

阅读更多
 
一、安装
 Ubuntu 14.04.2 
缺省的mongodb的版本是2.*版本
详细参照:https://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/
直接安装即可升级:  apt-get install mongo.org
说明:这种升级后,在 /var/lib/mongodb中仍然保存的是原来版本的数据格式,也就是在使用缺省数据库文件的时候,是老版本的数据。可能也是为了兼容的问题。(似乎是这样)
二、运行环境规划,做好配置文件:
指定自己的data、log、绑定ip、端口、认证
这些都配置到自己的配置文件中:home/***/my_etc/mongodb.conf
storage:
  dbPath: /home/***/mongodb/data
  journal:
    enabled: true
systemLog:
  destination: file
  logAppend: true
  path: /home/suanqi/mongodb/mongod.log
net:
  port: ***
  bindIp: ***
security:
  keyFile: /home/suanqi/my_etc/mongodb-keyfile
  authorization: enabled
其中黄色部分非常重要(为将来做cluster做准备,本次可以不需要);
keyFile的生成参见如下命令:
openssl rand -base64 741 > /home/***/mongodb/mongodb-keyfile
chmod 600 mongodb-keyfile
三、创建一个系统用户;
1、no auth方式启动  sudo mongod --dbpath /home/suanqi/mongodb/data #需要事前创建此目录
2、修改验证机理。3.0由MONGODB-CR 改为sha1,但是为什么远端还是使用mongodb-cr,估计是我的客户端没有升级导致。参见如下操作:
> use admin
switched to db admin
> var schema = db.system.version.findOne({"_id" : "authSchema"})
> schema
{ "_id" : "authSchema", "currentVersion" : 5 }
> schema.currentVersion=3
3
> db.system.version.save(schema)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
到这里,说明认证方式改变了。就可以使用 MONGODB-CR 验证机理了。
上述操作未解决如下错误:
Failed to authenticate woxi@admin with mechanism MONGODB-CR: AuthenticationFailed MONGODB-CR credentials missing in the user document
红色的代码不需要,但是也是费了比较大的功夫查到的解决错误的做法。在此做一个记录。
 
3、添加数据库系统管理员帐号:
use admin
db.createUser(
  {
    user: "***",
    pwd: "***",
    roles: [ { role: "root", db: "admin" } ]
  }
)
然后以这个帐号启动mongod;sudo mongod  --config /home/suanqi/my_etc/mongod.conf &
4、远端连接,并创建一个数据库用户,这是为了安全起见。
用刚才创建的帐号登录,
mongo -u ** -p ** --authenticationDatabase "admin" ip地址:mongodb端口号  #在mongodb.conf中
说明,mongdb3 ,在mongo客户端连接数据库时,需要指定“使用什么用户库”,缺省是admin。
use admin
db.createUser(
  {
    user: "##",
    pwd: "##",
    roles: [ { role: "dbOwner", db: "##" } ]
  }
)
5、如果用户创建出问题,用户管理得到用户、删除用户、给用户赋权。
db.getUser("帐号")
db.dropUser("帐号")
db.grantRolesToUser("帐号","roles": [{"role": "dbOwner","db": "库名"}])
 
6、使用新创建的数据库用户与后台连接
mongo -u "woxi" -p "woxi2014" --authenticationDatabase "admin" 101.200.191.85:27789/rails_api
 
四、rails的配置文件;按照说明配置好像总有问题。最后索性把 auth_source,roles都配置上,rails侧就算ok
参照如下配置
development:
# Configure available database clients. (required)
clients:
# Defines the default client. (required)
default:
# Defines the name of the default database that Mongoid can connect to.
# (required).
database: 库名
# Provides the hosts the default client can connect to. Must be an array
# of host:port pairs. (required)
hosts:
- ip地址:端口
options:
# Change the default write concern. (default = { w: 1 })
# write:
# w: 1

# Change the default read preference. Valid options for mode are: :secondary,
# :secondary_preferred, :primary, :primary_preferred, :nearest
# (default: primary)
# read:
# mode: :secondary_preferred
# tag_sets:
# - use: web

# The name of the user for authentication.
user: '###'

# The password of the user for authentication.
password: '####'

# The user's database roles.
roles:
- 'dbOwner'

# Change the default authentication mechanism. Valid options are: :scram,
# :mongodb_cr, :mongodb_x509, and :plain. (default on 3.0 is :scram, default
# on 2.4 and 2.6 is :plain)
# auth_mech: :mongodb_cr

# The database or source to authenticate the user against. (default: admin)
auth_source: admin
.....
分享到:
评论

相关推荐

    Ruby on Rails框架程序连接MongoDB的教程

    2.我们将要使用MongoMapper来驱动MongoDB到Rails 编辑GemFile,增加下面的内容 gemmongo_mapper 然后 执行 bundle install 安装gem bundle install 3.添加数据库链接 在config/initializer下面新建一个mongo.rb...

    MongoDB权威指南(中文版)高清

    15111.2.4 评论树 15211.2.5 投票 15311.3 自定义提交表单:Ruby 15411.3.1 安装Ruby驱动 15411.3.2 使用Ruby驱动 15511.3.3 自定义表单提交 15511.3.4 Ruby的对象映射和在Rails中使用MongoDB 15711.4...

    rails-postgres-mongo:同时使用Postgres和Mongo的Rails应用程序

    为Rails应用程序设置Postgres连接 将Gemfile从sqlite3更改为pg以便我们在本地使用Postgres 将config/database.yml更改为: default : &default adapter : postgresql pool : 5 timeout : 5000 development : &...

    http_log:将HTTP请求记录到MongoDB进行调试并通过Web访问它们

    您可以将此标头与Rails添加的标头结合使用,以跟踪应用程序与您的应用程序进行的对话。安装此宝石使用Mongoid来存储模型。 一旦安装了gem,请运行mongoid配置生成器以建立连接。 gem '...

    mongobetween

    当前,它使用作为Docker边车与Rails应用程序一起部署,并连接到许多分片的MongoDB集群。 它旨在连接到负责选择服务器的读写选择的mongos路由器(直接连接到副本集的mongod实例尚未经过严格的测试)。 这个怎么运作 ...

    nosql 入门教程

    1.1.1 背景与历史 3 1.1.2 大数据 5 1.1.3 可扩展性 7 1.1.4 MapReduce 8 1.2 面向列的有序存储 9 1.3 键/值存储 11 1.4 文档数据库 14 1.5 图形数据库 15 1.6 小结 16 第2章 NoSQL上手初体验 17 2.1 第...

    popolo-engine:Popolo作为Rails引擎的参考实现

    Popolo Rails引擎如果您正在寻找数据规范的GitHub存储库,请转到存储库。 Popolo的目标是使公民开发者更容易创建政府透明度,监控和参与的网站。 Popolo是,为应用程序提供...入门Popolo使用Mongoid连接到MongoDB。 首

    完整的Ruby地理编码解决方案。-Ruby开发

    Geocoder完整的Ruby地理编码解决方案。 主要功能:正向和反向地理编码。 IP地址地理编码。 ...数据库:MySQL,PostgreSQL,SQLite和MongoDB。 Rails:4、5和6。在JSON(适用于MRI)或json_pure(fo

    Node.jsMVC框架COKE.js.zip

    COKE 是在 Express 的基础上建立的,所以用户可以使用所有的 Express 的 middlewares ,可以直接连接 Express。 特性: MVC structure. Mongoose as ODM (mongodb), supports validation. Lightening fast ...

    geocoder:完整的Ruby地理编码解决方案

    可在Rails之外与json (对于MRI)或json_pure (对于JRuby)gem一起使用。 目录 基本特点: 高级功能: 其余的部分: 也可以看看: (本自述文件的一部分) 基本搜寻 Geocoder以最简单的形式获取地址并搜索其经度/...

    ToolJet:用于构建和部署内部工具的开源无代码平台

    您可以连接到您的数据源,例如数据库(如 PostgreSQL、MongoDB、Elasticsearch 等)、API 端点(ToolJet 支持导入 OpenAPI 规范和 OAuth2 授权)和外部服务(如 Stripe、Slack、Google Sheets、Airtable)并使用...

Global site tag (gtag.js) - Google Analytics