您的位置:首页 > 数据库 > Mongodb

centos7安装mongodb并添加服务启动

2017-11-29 15:30 363 查看
在/usr/local下新建mongodb目录:

[root@vm172-31-0-12 local]# mkdir mongodb

在mongodb目录下获取tar包:

[root@vm172-31-0-12 mongodb]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.5.9.tgz
解压:

[root@vm172-31-0-12 mongodb]# tar -zxvf mongodb-linux-x86_64-rhel70-3.5.9.tgz

修改名字,删除tar包:

[root@vm172-31-0-12 mongodb]# mv mongodb-linux-x86_64-rhel70-3.5.9 mongodb-3.5.9

[root@vm172-31-0-12 mongodb]# rm -f mongodb-linux-x86_64-rhel70-3.5.9.tgz

进入mongodb-3.5.9,新建data目录和mongodb.log:

[root@vm172-31-0-12 mongodb]# cd mongodb-3.5.9/
[root@vm172-31-0-12 mongodb-3.5.9]# mkdir data
[root@vm172-31-0-12 mongodb-3.5.9]# touch mongodb.log


启动mongodb:

有两种方式启动:授权方式和非授权方式。.

打开bin目录,

1.以非授权方式启动:

[root@vm172-31-0-12 mongodb-3.5.9]# ./mongod --dbpath=/usr/local/mongodb/mongodb-3.5.9/data --logpath=/usr/local/mongodb/mongodb-3.5.9/mongodb.log --logappend --port=27017 --fork


看到如下输出,则表示启动成功:

[root@vm172-31-0-12 bin]# ./mongod --dbpath=/usr/local/mongodb/mongodb-3.5.9/data --logpath=/usr/local/mongodb/mongodb-3.5.9/mongodb.log --logappend --port=27017 --fork
about to fork child process, waiting until server is ready for connections.
forked process: 15002
child process started successfully, parent exiting
[root@vm172-31-0-12 bin]#


进入mongodb:

[root@vm172-31-0-12 bin]# ./mongo
MongoDB shell version v3.5.9
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.5.9
Server has startup warnings:
2017-11-29T14:48:22.707+0800 I STORAGE  [initandlisten]
2017-11-29T14:48:22.707+0800 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2017-11-29T14:48:22.707+0800 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem 2017-11-29T14:48:22.751+0800 I CONTROL  [initandlisten]
2017-11-29T14:48:22.751+0800 I CONTROL  [initandlisten] ** NOTE: This is a development version (3.5.9) of MongoDB.
2017-11-29T14:48:22.751+0800 I CONTROL  [initandlisten] **       Not recommended for production.
2017-11-29T14:48:22.751+0800 I CONTROL  [initandlisten]
2017-11-29T14:48:22.751+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-11-29T14:48:22.751+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2017-11-29T14:48:22.752+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2017-11-29T14:48:22.752+0800 I CONTROL  [initandlisten]
2017-11-29T14:48:22.752+0800 I CONTROL  [initandlisten] ** WARNING: This server is bound to localhost.
2017-11-29T14:48:22.752+0800 I CONTROL  [initandlisten] **          Remote systems will be unable to connect to this server.
2017-11-29T14:48:22.752+0800 I CONTROL  [initandlisten] **          Start the server with --bind_ip <address> to specify which IP
2017-11-29T14:48:22.752+0800 I CONTROL  [initandlisten] **          addressses it should serve responses from, or with --bind_ip_all to
2017-11-29T14:48:22.752+0800 I CONTROL  [initandlisten] **          bind to all interfaces. If this behavior is desired, start the
2017-11-29T14:48:22.752+0800 I CONTROL  [initandlisten] **          server with --bind_ip 127.0.0.1 to disable this warning.
2017-11-29T14:48:22.752+0800 I CONTROL  [initandlisten]
2017-11-29T14:48:22.752+0800 I CONTROL  [initandlisten]
2017-11-29T14:48:22.752+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2017-11-29T14:48:22.752+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2017-11-29T14:48:22.752+0800 I CONTROL  [initandlisten]
2017-11-29T14:48:22.752+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2017-11-29T14:48:22.752+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2017-11-29T14:48:22.752+0800 I CONTROL  [initandlisten]
2017-11-29T14:48:22.752+0800 I CONTROL  [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 3903 processes, 65535 files. Number of processes should be at least 32767.5 : 0.5 times number of files.
2017-11-29T14:48:22.752+0800 I CONTROL  [initandlisten]
> show dbs;
admin  0.000GB
local  0.000GB


2.以授权方式启动

1)创建超级管理员root

> db.createUser({user:"root",pwd:"root",roles:[{role:"root",db:"admin"}]});
Successfully added user: {
"user" : "root",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
2)以授权方式重启mongodb(一定用kill -2不能用kill -9)

[root@vm172-31-0-12 bin]# ps -ef | grep mongodb
root     15002     1  0 14:48 ?        00:00:02 ./mongod --dbpath=/usr/local/mongodb/mongodb-3.5.9/data --logpath=/usr/local/mongodb/mongodb-3.5.9/mongodb.log --logappend --port=27017 --fork
root     15659  9930  0 15:07 pts/0    00:00:00 grep --color=auto mongodb
[root@vm172-31-0-12 bin]# kill -2 15002
[root@vm172-31-0-12 bin]# ps -ef | grep mongodb
root     15665  9930  0 15:07 pts/0    00:00:00 grep --color=auto mongodb
[root@vm172-31-0-12 bin]# ./mongod --dbpath=/usr/local/mongodb/mongodb-3.5.9/data --logpath=/usr/local/mongodb/mongodb-3.5.9/mongodb.log --logappend --port=27017 --fork --auth
about to fork child process, waiting until server is ready for connections.
forked process: 15758
child process started successfully, parent exiting
[root@vm172-31-0-12 bin]#
3)授权查看

[root@vm172-31-0-12 bin]# ./mongo
MongoDB shell version v3.5.9
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.5.9
> use admin;
switched to db admin
> db.auth("root","root");
1
> show users;
{
"_id" : "admin.root",
"user" : "root",
"db" : "admin",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
>


至此,安装启动完成。
总结注意:

1) 一定要切换到对应的数据库去创建用户, 否则在进行认证的时候, 会提示找不到用户
2) 一定要到对应的数据库上去认证用户, 否则会认证授权失败
补充:
每次敲命令启动实在是麻烦,在网上找到一个添加服务启动的脚本,测试可行。
添加服务启动:
[root@vm172-31-0-12 bin]# cd /etc/init.d/

[root@vm172-31-0-12 init.d]# vim mongodb-auth

#!/bin/sh
#
#mongod - Startup script for mongod
#
# chkconfig: - 85 15
# description: Mongodb database.
# processname: mongod
# Source function library

. /etc/rc.d/init.d/functions
# things from mongod.conf get there by mongod reading it
# OPTIONS
OPTIONS=" --dbpath=/usr/local/mongodb/mongodb-3.5.9/data --logpath=/usr/local/mongodb/mongodb-3.5.9/mongodb.log --logappend --port=27017 --fork --auth &"
#mongod
mongod="/usr/local/mongodb/mongodb-3.5.9/bin/mongod"
lockfile=/var/lock/subsys/mongod
start()
{
echo -n $"Starting mongod: "
daemon $mongod $OPTIONS
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch $lockfile
}

stop()
{
echo -n $"Stopping mongod: "
killproc $mongod -QUIT
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f $lockfile
}

restart () {
stop
start
}
ulimit -n 12000
RETVAL=0

case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload|force-reload)
restart
;;
condrestart)
[ -f $lockfile ] && restart || :
;;
status)
status $mongod
RETVAL=$?
;;
*)
echo "Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}"
RETVAL=1
esac
exit $RETVAL
(请自行修改dbpath、logpath和mongod的路径)
保存退出。
然后使用 chmod +x /etc/init.d/mongodb-auth 添加执行权限。
完成。这个是有权限启动的脚本,无权限启动的脚本去掉里面options的--auth即可。

然后就可以用service mongo-auth start|stop|restart的服务命令了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mongodb centos