最近装了个mongodb,就写下记录下吧。
1.先去mongodb的官网,去下载对应版本的mongodb
centos是下面这个,直接用下面命令,wget就好了。
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.4.tgz
2.解压下来,移动到你想放到的目录。我的是在/usr/local/server/mongodb/下面
3.在mongodb目录下创建data数据目录,创建log日志目录。
4.然后进入到mongodb目录下的bin目录
登录有两种方式
1)直接指定参数
需要权限的登录
/usr/local/server/mongodb/bin/mongod --dbpath=/usr/local/server/mongodb/data --logpath=/usr/local/server/mongodb/logs --logappend --auth --port=27017 --fork
不需要权限的登录
./mongod --dbpath=/usr/local/server/mongodb/data --logpath=/usr/local/server/mongodb/log/mongo.log --logappend --port 27017 --fork
查看是否启动成功
#查看MongoDB是否启动
netstat -lanp | grep "27017"
2)指定配置文件
./mongod --config /usr/local/server/mongodb/mongodb.conf
mongodb.conf内容
port=27107#端口号
dbpath=/usr/local/server/mongodb/data #数据库路径
logpath=/usr/local/server/mongodb/log/mongo.log #日志输出文件路径
#pidfilepath=/usr/local/server/mongodb/mongo.pid
fork=true #设置后台运行
logappend=true #日志输出方式
#shardsvr=true
#directoryperdb=true
auth=false #关闭认证
#还可以添加自己需要的参数在其中。
5.参数解释: –dbpath 数据库路径(数据文件)
--logpath 日志文件路径
--master 指定为主机器
--slave 指定为从机器
--source 指定主机器的IP地址
--pologSize 指定日志文件大小不超过64M.因为resync是非常操作量大且耗时,最好通过设置一个足够大的oplogSize来避免resync(默认的 oplog大小是空闲磁盘大小的5%)。
--logappend 日志文件末尾添加
--port 启用端口号
--fork 在后台运行
--only 指定只复制哪一个数据库
--slavedelay 指从复制检测的时间间隔
--auth 是否需要验证权限登录(用户名和密码)
(补充)关于auth认证,今天没事我又试了下,结果发现特别厉(keng)害(die)。
添加admin数据库管理员
use admin;
db.createUser(
{
user: "admin",
pwd: "password",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
认证
use admin;
db.auth("admin","password");
ok,返回1,反则报错。(记得先use admin)
当你添加完之后,登录,去查看别的数据库,他会告诉你,没有权限。。。你还需要针对你要看的库建立账号。
db.createUser(
{
user: "yu",
pwd: "yu12346",
roles: [
{ role: "readWrite", db: "yu" }
]
}
)
//只有上面添加的对admin数据库有操作权限的账号,才可以添加,然后,在重新认证一遍就ok了。就可以看到你要看的这个数据库的数据了。 readOnly 只读属性
6.进入mongodb,先进入mongodb的bin目录下
./mongo
或者
./mongod --config /usr/local/server/mongodb/mongodb.conf
关闭则是
use admin;
db.shutdownServer();
或者
./mongo 127.0.0.1:40000/admin --eval "db.shutdownServer()" #关闭MongoDB
设置开机启动MongoDB
vi /etc/rc.d/init.d/mongod,内容如下
ulimit -SHn 655350
#!/bin/sh
#chkconfig: - 6436
#description:mongod
case $1 in
start)
/usr/local/server/mongodb/bin/mongod --maxConns 20000 --config /usr/local/server/mongodb/mongodb.conf
;;
stop)
/usr/local/server/mongodb/bin/mongo 127.0.0.1:27017/admin --eval "db.shutdownServer()"
;;
status)
/usr/local/server/mongodb/bin/mongo 127.0.0.1:27017/admin --eval "db.stats()"
;;
esac
chmod +x /etc/rc.d/init.d/mongod #添加脚本执行权限
chkconfig mongod on #设置开机启动
而且mongod作为服务来启动
service mongod start #启动MongoDB
service mongod stop #停止MongoDB
把mongodb添加环境变量
vi /etc/profile #添加环境变量,编辑,在最后一行添加下面的代码
export PATH=$PATH:/usr/local/server/mongodb
:wq! #保存退出
source /etc/profile #使配置立即生效
mongo #进入MongoDB控制台
show dbs #查看默认数据库
use admin #切换到admin数据库
exit #退出MongoDB控制台
其他的基本操作
查所有的数据库还有大小。
show dbs;
查看所有的集合
show collections
创建集合
db.createCollection("testSegment")
mongo组合查询 between x and x
db.travel_notes3.find({"storage_time" : {$lt :1495382400000,$gt : 1494777600000},"reserved_field":"白沙湖"}).limit(5).sort({read_count:-1});
修改命令
只会修改一条
db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
修改多条,加上multi参数
db.test_yu.update({'importStatus':1},{$set:{'importStatus':0}},{multi:true});
建索引
db.travel_notes.ensureIndex({"reserved_field":1},{"background":true});
插入数据
db.movie.insert({"name":"yu","age":25,"hometown":"henan"})
统计
db.data_02_import_fail.find({importStatus:0}).count();
mongo删除所有数据
db.testSegment.remove({});
删除一条数据
db.test_ttlsa_com.remove({"ban_friends_id":"BAN121113"})
7.安装中遇到的问题
about to fork child process, waiting until server is ready for connections.
forked process: 23054
ERROR: child process failed, exited with error number 1
这算是一个Mongod 启动的一个常见错误,非法关闭的时候,lock 文件没有干掉,第二次启动的时候检查到有lock 文件的时候,就报这个错误了。
mongod.lock文件是mongo服务端启动后在硬盘中创建的一个锁文件,
如果你正常退出mongod服务,该文件即使还存在,也不会影响下一次启动mongod服务的。
这个文件还会记录mongod在运行过程中的一些状态,以便在正常重新启动服务时能够获取异常信息提示。
解决方法:进入 mongod 上一次启动的时候指定的 data 目录 –dbpath=/usr/local/server/mongodb/data,删除mongo.lock
rm mongo.lock
再执行:
./mongod --repair
然后再重启就ok了。
参考链接
觉得有用,就帮忙点个赞吧,亲。