mongodb3.0.6使用

本贴最后更新于 3116 天前,其中的信息可能已经时移世异
  • 启动

    mongod --dbpath=/home/data

  • 带权限启动

    • 连接 mongo admin 数据库

      mongo admin

    • 增加用户

      db.createUser({user:'user',pwd:'123456',roles:[{role:'dbOwner',db:'userdb'}]})

    • 以带权限方式启动

      mongod --dbpath=/home/data --auth

    • 带权限登录

      mongo admin -u user -p 123456

  • mongod 启动后在后台运行

    • --fork 参数 ,必须指定日志 --logpath=文件,--logappend 用户日志文件向后追加
      mongod --dbpath=/home/data --logappend --logpath=/home/log/mongod.log --fork

    • fork 后台运行如何关闭

      kill - 9 pid 或 进入 admin --> use admin --> db.shutdownServer();

  • 推荐 windows 查看 mongodb 管理工具 robomongo,mongoVUE

  • 开启权限后出现问题

    1. sping boot 连接不上
    2. mongodb 管理工具也连接不上
    3. mongo admin -u user -p 123456 可以连接

原因是:mongodb 3 后默认使用了 SCRAM-SHA-1 加密方式

解决方法:

修改数据库认证方式

      *  关闭mongo服务,然后以未认证形式启动
      
      *  修改system.version文档里面的authSchema版本为3,初始安装时候应该是5
          
          > ` use admin `
          > switched to db admin
          > var schema = db.system.version.findOne({"_id" : "authSchema"}) 
          > schema.currentVersion = 3 
          > db.system.version.save(schema) 
      	  > WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })   
                              
      *  原来创建的用户已经使用了SCRAM-SHA-1认证方式,需要删除后再新建
      
         >  db.dropUser("user")
         >  true
         >  db.createUser({user:'user',pwd:'123456',roles:[{role:'dbOwner',db:'userdb'}]})
         
      * 叁考 http://21jhf.iteye.com/blog/2216103

修改代码方式(但是数据库管理工具还是连不上)

主要是两个类 ,一个 MongoDBConfiguration

	@Configuration
	@EnableConfigurationProperties(MongoProperties.class)
	public class MongoDBConfiguration {

	@Autowired
	private MongoProperties properties;
	@Autowired(required = false)
	private MongoClientOptions options;
	private Mongo mongo;
	@PreDestroy
	public void close() {
    	if (this.mongo != null) {
        	this.mongo.close();
    	}
	}
	@Bean
	public Mongo mongo() throws UnknownHostException {
    	this.mongo = mongoClient();
    	return this.mongo;
	}

	public MongoClient mongoClient() throws UnknownHostException{
    	return this.properties.createMongoClient(this.options);
	}
	@Bean
	public MongoDbFactory mongoDbFactory() throws Exception {
    	return new SimpleMongoDbFactory(mongoClient(),"gsiao");
	}
	}
    
 和修改MongoProperties源码后的类,在项目下新建类org.springframework.boot.autoconfigure.mongo.MongoProperties覆盖,
 主要改地方是
 
 	public MongoClient createMongoClient(MongoClientOptions options)
        throws UnknownHostException {
    	try {
        if (hasCustomAddress() || hasCustomCredentials()) {
            if (options == null) {
                options = MongoClientOptions.builder().build();
            }
            List<MongoCredential> credentials = null;
            if (hasCustomCredentials()) {
                String database = this.authenticationDatabase == null ? getMongoClientDatabase()
                        : this.authenticationDatabase;
                credentials = Arrays.asList(MongoCredential.createScramSha1Credential(
                        this.username, database, this.password));
            }
            String host = this.host == null ? "localhost" : this.host;
            int port = this.port == null ? DEFAULT_PORT : this.port;
            return new MongoClient(Arrays.asList(new ServerAddress(host, port)),
                    credentials, options);
        }
        // The options and credentials are in the URI
        return new MongoClient(new MongoClientURI(this.uri, builder(options)));
    	}
    	finally {
        	clearPassword();
    	}
	}

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • 星云链

    星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网

    3 引用 • 16 回帖
  • HBase

    HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。

    17 引用 • 6 回帖 • 45 关注
  • 自由行
    1 关注
  • Windows

    Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    215 引用 • 462 回帖
  • SMTP

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。

    4 引用 • 18 回帖 • 589 关注
  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 54 关注
  • Log4j

    Log4j 是 Apache 开源的一款使用广泛的 Java 日志组件。

    20 引用 • 18 回帖 • 41 关注
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    91 引用 • 751 回帖
  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    205 引用 • 357 回帖
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 609 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3168 引用 • 8207 回帖
  • 强迫症

    强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。

    15 引用 • 161 回帖 • 4 关注
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖 • 1 关注
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    492 引用 • 1383 回帖 • 374 关注
  • Flume

    Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。

    9 引用 • 6 回帖 • 594 关注
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    1 引用 • 11 回帖 • 2 关注
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 428 关注
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    140 引用 • 441 回帖
  • 小说

    小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。

    28 引用 • 108 回帖
  • 智能合约

    智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于 1994 年由 Nick Szabo 首次提出。

    1 引用 • 11 回帖 • 7 关注
  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    533 引用 • 3528 回帖
  • 导航

    各种网址链接、内容导航。

    37 引用 • 168 回帖 • 1 关注
  • gRpc
    10 引用 • 8 回帖 • 55 关注
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    7 引用 • 26 回帖 • 3 关注
  • Ruby

    Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)设计并开发。在 Ruby 社区,松本也被称为马茨(Matz)。

    7 引用 • 31 回帖 • 175 关注
  • 外包

    有空闲时间是接外包好呢还是学习好呢?

    26 引用 • 232 回帖 • 6 关注