【MongoDB】2、安装MongoDB 2.6.1 on Unbuntu 14.04(学习流水账)
http://blog.csdn.net/stationxp/article/details/26077439
计划:
装一个虚机,ubuntu吧,14.04 Trusty Tahr。
安装MongoDB
网络资源:
http://mirrors.aliyun.com/ubuntu-releases/14.04/ubuntu-14.04-server-amd64.iso.torrent(公网)
http://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/14.04/ubuntu-14.04-server-amd64.iso.torrent(教育网)
http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.6.1.tgz
虚拟机:
处理器数量1:内核数:1(多核对MongoDB帮助不大);MM 1G(RAM瓶颈应该会出现);HD 20G。
安装Unbuntu,用户名:gd,密码:cgdc。
TO小超超,服务器在1.4.3x,一起玩儿吧。
安装指导:
http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/
由于Ubuntu官方APT源里的MongoDB版本比较旧,这里用MongoDB提供的APT源进行安装。
要使用第三方源上的软件,除了在sources.list上添加对应的源外,还要有增加相应的公钥Key才能正确安装软件。
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list
sudo apt-get update
sudo apt-get install mongodb-org
报错:unable to locate package
sudo apt-get install mongodb就可以,可能版本会老一点,无所谓吧。
要更新的包包括:libboost、libc、libgcc、mongodb、mongodb-clients、mongodb-dev、mongodb-server。
一共38个,下载41.5M,90多K,速度还好,可以先去看会儿书了。
下载到一半,断了。
F!
弃用apt。
sudo apt-get install openssh-server
这个很快。
用“netstat -tlp”或“ps -e | grep ssh”确认sshd启动。
http://www.cnblogs.com/chen1987lei/archive/2010/12/02/1894768.html
解压后得到一堆二进制可执行文件,除了bsondump其他都是mongo打头的。拷贝到 /usr/bin 下面。
chmod a+x
到此,装好。
/*
如果安装特定版本:
apt-get install mongodb-org=2.6.1 mongodb-org-server=2.6.1
mongodb-org-shell=2.6.1 mongodb-org-mongos=2.6.1 mongodb-org-tools=2.6.1
禁用自动升级:
echo "mongodb-org hold" | sudo dpkg --set-selections
echo "mongodb-org-server hold" | sudo dpkg --set-selections
echo "mongodb-org-shell hold" | sudo dpkg --set-selections
echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
echo "mongodb-org-tools hold" | sudo dpkg --set-selections
运行:
sudo /etc/init.d/mongod start
sudo /etc/init.d/mongod stop
sudo /etc/init.d/mongod restart
*/
启动,报错,说dbpath不存在,需要手动创建目录。
创建了 /data/mongodb1 目录。
启动的时候加--dbpath。
启动没有报错,但忘了 --fork方式启动了。
还好,可以ssh连。
报错:sda1:WRITE SAME faild.Manually zeroing.没有修改配置,后来没见过这个问题了。为什么呢?
数据目录没开写权限?sudo启动服务器都不行?
kill [pid]
use admin
db.shutdownServer()
启动config:
启动选项很多,每次在命令行敲麻烦死了,写在config文件里吧。
选项包括:
--port
--fork(以守护进程方式执行)
--logpath
--config
配置文件写法:
port = 110271
fork = true
logpath = mongodb.log
无论如何,进入Shell了。
敲help,先爽一下吧。
- > help
db.help() help on db methods
db.mycoll.help() help on collection methods
sh.help() sharding helpers
rs.help() replica set helpers
help admin administrative help
help connect connecting to a db help
help keys key shortcuts
help misc misc things to know
help mr mapreduce
show dbs show database names
show collections show collections in current database
show users show users in current database
show profile show most recent system.profile entries with time >= 1ms
show logs show the accessible logger names
show log [name] prints out the last segment of log in memory, 'global' is default
use <db_name> set current database
db.foo.find() list objects in collection foo
db.foo.find( { a : 1 } ) list objects in foo where a == 1
it result of the last line evaluated; use to further iterate
DBQuery.shellBatchSize = x set default number of items to display on shell
exit quit the mongo shell
如果是方法,敲上括号是调用,不敲括号,输出方法原型。
客户端Shell:
运行./mongo既可以启动Shell对mongodb进行管理。
Shell使用Javascipt语法,可以对数据进行管理,可以对数据库进行管理。
官网版本:http://try.mongodb.org/。 可以上手玩玩。
很简单,没什么可说的。
创建个数据库吧:
>
> use cgdc
switched to db cgdc
> show collections
> show dbs
admin (empty)
cgdc (empty)
local 0.078GB
> db.users.help()
DBCollection help
db.users.find().help() - show DBCursor help
db.users.count()
db.users.copyTo(newColl) - duplicates collection by copying all documents to newColl; no indexes are copied.
db.users.convertToCapped(maxBytes) - calls {convertToCapped:'users', size:maxBytes}} command
db.users.dataSize()
db.users.distinct( key ) - e.g. db.users.distinct( 'x' )
db.users.drop() drop the collection
db.users.dropIndex(index) - e.g. db.users.dropIndex( "indexName" ) or db.users.dropIndex( { "indexKey" : 1 } )
db.users.dropIndexes()
db.users.ensureIndex(keypattern[,options]) - options is an object with these possible fields: name, unique, dropDups
db.users.reIndex()
db.users.find([query],[fields]) - query is an optional query filter. fields is optional set of fields to return.
e.g. db.users.find( {x:77} , {name:1, x:1} )
db.users.find(...).count()
db.users.find(...).limit(n)
db.users.find(...).skip(n)
db.users.find(...).sort(...)
db.users.findOne([query])
db.users.findAndModify( { update : ... , remove : bool [, query: {}, sort: {}, 'new': false] } )
db.users.getDB() get DB object associated with collection
db.users.getPlanCache() get query plan cache associated with collection
db.users.getIndexes()
db.users.group( { key : ..., initial: ..., reduce : ...[, cond: ...] } )
db.users.insert(obj)
db.users.mapReduce( mapFunction , reduceFunction , <optional params> )
db.users.aggregate( [pipeline], <optional params> ) - performs an aggregation on a collection; returns a cursor
db.users.remove(query)
db.users.renameCollection( newName , <dropTarget> ) renames the collection.
db.users.runCommand( name , <options> ) runs a db command
with the given name where the first param is the collection name
db.users.save(obj)
db.users.stats()
db.users.storageSize() - includes free space allocated to this collection
db.users.totalIndexSize() - size in bytes of all the indexes
db.users.totalSize() - storage allocated for all data and indexes
db.users.update(query, object[, upsert_bool, multi_bool]) -
instead of two flags, you can pass an object with fields: upsert, multi
db.users.validate( <full> ) - SLOW
db.users.getShardVersion() - only for use with sharding
db.users.getShardDistribution() - prints statistics about data distribution in the cluster
db.users.getSplitKeysForChunks( <maxChunkSize> ) -
calculates split points over all chunks and returns splitter function
db.users.getWriteConcern() - returns the write concern used for
any operations on this collection, inherited from server/db if set
db.users.setWriteConcern( <write concern doc> ) - sets the write concern for writes to the collection
db.users.unsetWriteConcern( <write concern doc> ) - unsets the write concern for writes to the collection
> db.users.save({name:"liuhailong",hometown:"Hebei"});
WriteResult({ "nInserted" : 1 })
> show dbs;
admin (empty)
cgdc 0.078GB
local 0.078GB
> db.cgdc.users.find()
> ;
> cgdc.users.find()
2014-05-17T03:14:37.528-0700 ReferenceError: cgdc is not defined
> db.users.find()
{ "_id" : ObjectId("5377366b70e0a3f0e2e28f91"), "name" : "liuhailong", "hometown" : "Hebei" }
>
HOHO
安全和权限:
use [databasename]
db.addUser(username,pwd,isReadOnly);
> use admin
switched to db admin
> db.addUser("gd","cgdc");
WARNING: The 'addUser' shell helper is DEPRECATED. Please use 'createUser' instead
Successfully added user: { "user" : "gd", "roles" : [ "root" ] }
> use cgdc
switched to db cgdc
> db.createUser("cgdc","cgdc");
2014-05-17T03:17:58.058-0700 Error: couldn't add user: no such cmd: 0 at src/mongo/shell/db.js:1004
> db.addUser("cgdc","cgdc");
WARNING: The 'addUser' shell helper is DEPRECATED. Please use 'createUser' instead
Successfully added user: { "user" : "cgdc", "roles" : [ "dbOwner" ] }
> db.createUser().help()
2014-05-17T03:19:16.032-0700 TypeError: Cannot read property 'user' of undefined at src/mongo/shell/db.js:979
> db.createUser
function (userObj, writeConcern) {
var commandExisted = this._createUser(userObj, writeConcern);
if (!commandExisted) {
throw Error("'createUser' command not found. This is most likely because you are " +
"talking to an old (pre v2.6) MongoDB server");
}
}
> db.addUser("cgdc_readonly","cgdc",true);
WARNING: The 'addUser' shell helper is DEPRECATED. Please use 'createUser' instead
Successfully added user: { "user" : "cgdc_readonly", "roles" : [ "read" ] }
>
--fork 运行,一定要指定logpath --
启动服务器时,加 --auth 选项。
gd@ubuntu:~$ sudo /usr/bin/mongo
MongoDB shell version: 2.6.1
connecting to: test
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }
> show dbs
2014-05-17T03:24:14.308-0700 listDatabases failed:{
"ok" : 0,
"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
"code" : 13
} at src/mongo/shell/mongo.js:47
>
登录操作:
db.auth(username,pwd)
登录不成功,去掉--auth选项重新连。
> db.system.users.find()
{ "_id" : "admin.gd", "user" : "gd", "db" : "admin", "credentials" : {
"MONGODB-CR" : "d41a08d27097c5b67823dfdd85e9494d" }, "roles" : [ {
"role" : "root", "db" : "admin" } ] }
{ "_id" : "cgdc.cgdc", "user" : "cgdc", "db" : "cgdc", "credentials" : {
"MONGODB-CR" : "714ab4fd93e3012475de54246a444516" }, "roles" : [ {
"role" : "dbOwner", "db" : "cgdc" } ] }
{ "_id" : "cgdc.cgdc_readonly", "user" : "cgdc_readonly", "db" : "cgdc",
"credentials" : { "MONGODB-CR" : "c1a9ebbe08d3d0a27a33bd0435ee86f1" },
"roles" : [ { "role" : "read", "db" : "cgdc" } ] }
>
删掉重来:
> db.system.users.remove();
2014-05-17T03:33:45.736-0700 remove needs a query at src/mongo/shell/collection.js:299
> db.system.users.remove({});
WriteResult({ "nRemoved" : 3 })
> db.system.users.find();
>
删除用户:
db.system.users.remove({"user":username});
这次语法是这样:
use admin
db.createUser( {
user: "admin",
pwd: "cgdc",
roles: [ {
role: "userAdminAnyDatabase",
db: "admin"
} ]
}
);
db.createUser( {
user: "root",
pwd: "cgdc",
roles: [ { role: "root", db: "admin" } ]
}
);
use cgdc
db.createUser({
user: "cgdc",
pwd: "cgdc",
roles:[{
role: "dbOwner",
db: "cgdc"
}]
}
);
真难用!!
试试看
gd@ubuntu:~$ sudo /usr/bin/mongo -u admin -p
MongoDB shell version: 2.6.1
Enter password:
connecting to: test
2014-05-17T03:43:55.825-0700 Error: 18 { ok: 0.0, errmsg: "auth failed", code: 18 } at src/mongo/shell/db.js:1210
exception: login failed
gd@ubuntu:~$ sudo /usr/bin/mongo -u cgdc -p
MongoDB shell version: 2.6.1
Enter password:
connecting to: test
2014-05-17T03:44:10.909-0700 Error: 18 { ok: 0.0, errmsg: "auth failed", code: 18 } at src/mongo/shell/db.js:1210
exception: login failed
gd@ubuntu:~$ sudo /usr/bin/mongo
MongoDB shell version: 2.6.1
connecting to: test
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }
> db.auth("cgdc","cgdc");
Error: 18 { ok: 0.0, errmsg: "auth failed", code: 18 }
0
>
还是不行。
看看日志。
晕死,日志里说,test数据库不是你想连,想连就能练。 当然啊,没有给test加用户。
连cgdc库
> use cgdc
switched to db cgdc
> db.auth("cgdc","cgdc");
1
>
遇到问题多看日志!!!
其他安全考虑:
--bindip localhost
--noscripting (禁止服务器端JavaScript执行)
--nohttpinterface
传输加密(SSH隧道)
先到这里吧。
【MongoDB】2、安装MongoDB 2.6.1 on Unbuntu 14.04(学习流水账)的更多相关文章
- unbuntu 14.04 安装搜狗输入法
http://blog.csdn.net/leijiezhang/article/details/53707181
- MongoDB的安装与设置MongoDB服务
Mongo DB 是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式备受当前IT从业人员的青睐.Mongo DB很好的实现了面向对象的思想(OO思想),在Mongo DB ...
- Linux下MongoDB服务安装
Linux下MongoDB服务安装 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.MongoDB是一个介于关系数据库和非关系数据 ...
- Windows 安装 MongoDB 服务
第一步 以管理员权限打开命令提示符 按Windows+R键(Ctrl和Alt中间的那个,有微软Logo的键),输入cmd打开命令提示符 第二步 创建数据库目录. 使用mkdir命令,创建数据库的目录和 ...
- Ubuntu安装MongoDB和PHP扩展
MongoDB是一个可伸缩的,高性能的开源NoSQL 文档数据库.主要用C++开发完成.面向文档存储,全索引支持,可复制和高可用性,自动分片等特征.其在非关系型数据库中是功能最丰富,最像关系型数据库 ...
- MongoDB入门学习(一):MongoDB的安装和管理
以前用MySQL数据库,整天都是写大堆大堆的SQL语句,要记住这些SQL关键字都要花好几天时间,写的蛋都爆了,当接触到MongoDB的时候,发现不用写SQL,瞬间觉得高大上,瞬间产生了学习使用它的冲动 ...
- 安装MongoDB(做成Windows服务)并加载C#驱动程序
一 Mongodb简介: 通过查询网上的一些信息来介绍一下Mongodb的优势:MongoDB是一个面向文档的数据库,目前由10gen开发并维护,它的功能丰富,齐全,完全可以替代MySQL.在使用Mo ...
- MongoDB 的安装以及使用
MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案.MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数 ...
- Ubuntu下MongoDB的安装和使用
本博文介绍了MongoDB,并详细指引读者在Ubuntu下MongoDB的安装和使用.本教程在Ubuntu14.04下测试通过.(2017.09.07) 安装MongoDB MongoDB安装很简单, ...
随机推荐
- bzoj 1619: [Usaco2008 Nov]Guarding the Farm 保卫牧场【bfs】
不是严格小于是小于等于啊!!!!!不是严格小于是小于等于啊!!!!!不是严格小于是小于等于啊!!!!! 是我看不懂人话还是翻译不说人话= = 把所有格子按值排个序,bfs扩展打标记即可 #includ ...
- BFS(最短路+路径打印) POJ 3984 迷宫问题
题目传送门 /* BFS:额,这题的数据范围太小了.但是重点是最短路的求法和输出路径的写法. dir数组记录是当前点的上一个点是从哪个方向过来的,搜索+,那么回溯- */ /************* ...
- Spring MVC过滤器-HiddenHttpMethodFilter
参考来源:http://blog.csdn.net/geloin/article/details/7444321 浏览器form表单只支持GET与POST请求,而DELETE.PUT等method并不 ...
- WinForm ListBox 控件用法
下面演示如何利用列表控件 ListBox 实现多选与移动选项: using IMS.WinFormClient.UserControls; using System; using System.Col ...
- Storm编程入门API系列之Storm的可靠性的ACK消息确认机制
概念,见博客 Storm概念学习系列之storm的可靠性 什么业务场景需要storm可靠性的ACK确认机制? 答:想要保住数据不丢,或者保住数据总是被处理.即若没被处理的,得让我们知道. publi ...
- Asp 循环输出 form 表单提交的数据
亲测asp提交form表单数据,在接收页面循环输出数据 dim var for each var in request.form response.write var&"=" ...
- LN : leetcode 217 Contains Duplicate
lc 217 Contains Duplicate 217 Contains Duplicate Given an array of integers, find if the array conta ...
- (求助)对某一颜色,设置透明度 alpha 后,其他使用该颜色的地方 受到影响!!!!原因未知
对某一颜色,设置透明度 alpha 后,其他使用该颜色的地方 受到影响!!!!原因未知,有谁碰到过这样的问题?????? 测试了以下三款手机,结果如下: 1.android 4.4.2: 不受影响 2 ...
- 【Python-2.7】大小写转换函数
字母大小写是编程过程中经常遇到的问题,如下函数可以灵活的进行大小写转换: title():把单词首字母转换为大写: upper():把每个字母转换为大写: lower():把每个字母转换为小写. 示例 ...
- Java_数组1_16.5.12
声明整型数组a: int[] a; 这时,只声明了变量a,还应该使用new运算符创建数组: int[] a=new int [100];(数组长度不要求是一个常量:new int[n]会创建一个长度为 ...