设为首页 收藏本站
查看: 737|回复: 0

[经验分享] CentOS6安装mongoDB3.2.9

[复制链接]

尚未签到

发表于 2018-4-25 08:58:16 | 显示全部楼层 |阅读模式
一、MongoDB的安装

1、下载
cd /data/packages
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.9.tgz2、解压

tar zxvf mongodb-linux-x86_64-rhel62-3.2.9.tgz
mv mongodb-linux-x86_64-rhel62-3.2.9 /data/mongodb
cd /data/mongodb/
mkdir -p /data/mongodb/data    #目录中创建一个存放数据文件的目录:
mkdir -p /data/mongodb/logs   #目录中创建一个存放日志的目录:
touch /data/mongodb/logs/mongodb.log
mkdir conf &&cd conf3、编辑配置文件:

vim mongodb.conf 输入以下内容:
# idae - MongoDB config start - 2016-08-26
dbpath=/data/mongodb/data   # 设置数据文件的存放目录
logpath=/data/mongodb/logs/mongodb.log  # 设置日志文件的存放目录及其日志文件名
bind_ip=0.0.0.0
port=27017    # 设置端口号(默认的端口号是 27017)
fork=true       # 设置为以守护进程的方式运行,即在后台运行
nohttpinterface=true
# idae - MongoDB config end - 2016-08-26参数解释:
--dbpath 数据库路径(数据文件)
--logpath 日志文件路径
--master 指定为主机器
--slave 指定为从机器
--source 指定主机器的IP地址
--pologSize 指定日志文件大小不超过64M.因为resync是非常操作量大且耗时,最好通过设置一个足够大的oplogSize来避免resync(默认的 oplog大小是空闲磁盘大小的5%)。
--logappend 日志文件末尾添加,即使用追加的方式写日志
--journal 启用日志
--port 启用端口号
--fork 在后台运行
--only 指定只复制哪一个数据库
--slavedelay 指从复制检测的时间间隔
--auth 是否需要验证权限登录(用户名和密码)
--syncdelay 数据写入硬盘的时间(秒),0是不等待,直接写入
--notablescan 不允许表扫描
--maxConns 最大的并发连接数,默认2000  
--pidfilepath 指定进程文件,不指定则不产生进程文件
--bind_ip 绑定IP,绑定后只能绑定的IP访问服务

4、创建新的账号:

groupadd mongodb
useradd mongodb -g mongodb
chown -R mongodb:mongodb /data/mongodb
ln -s /data/mongodb/bin/mongo /usr/bin/mongo5、启动:

/data/mongodb/bin/mongod  --config /data/mongodb/conf/mongodb.conf a.报错:/lib64/libc.so.6: version `GLIBC_2.14' not found ,原因是glibc版本太低,软件编译时使用了较高版本的glibc引起的
    解决:http://www.cnblogs.com/gw811/p/3676856.html   
b.报错:[main] Failed global initialization: BadValue: Invalid or no user locale set. Please ensure LANG and/or LC_* environment variables are set correctly.
    解决:设置下环境变量就好了:   # export LC_ALL=C
-查看 mongodb 进程:

ps aux |grep mongodb-查看 mongodb 服务的运行日志:

tail -100f /data/mongodb/logs/mongodb.log-检查端口是否已被启动:

netstat -lanp | grep 27017-杀死 mongodb 进程,即可关闭 mongodb 服务:

kill -15 PID

6、设置开机自动启动mongodb
方法有二:
1、把这句话写到把 /etc/rc.local,即可开机启动。
echo /data/mongodb/bin/mongod  --config /data/mongodb/conf/mongodb.conf >/etc/rc.d/rc.local第二种:
2、将一个脚本放到/etc/init.d/
比如,命名为/etc/init.d/mongodb,则执行以下步骤即可:
1)要给它们赋予执行权限:

chmod +x /etc/init.d/mongodb2)接着试一下是否可以启动、停止:

service mongodb start
service mongodb stop3)最后设为开机启动:

chkconfig mongodb on#!/bin/bash
# mongod - Startup script for mongod
# chkconfig: 35 80 15
# description: Mongo is a scalable, document-oriented database.
# processname: mongod
# config: /data/mongodb/conf/mongod.conf
# pidfile: /var/run/mongo/mongo.pid
source /etc/rc.d/init.d/functions
# things from mongod.conf get there by mongod reading it
if [ $(id -u) != "0" ]; then
    echo "Permission Denied! Please use root to run again!"
    exit 1
fi
test -d /var/run/mongodb || (mkdir -p /var/run/mongodb ; chown mongod:mongod /var/run/mongodb)
# NOTE: if you change any OPTIONS here, you get what you pay for:
# this script assumes all options are in the config file.
CONFIGFILE="/data/mongodb/conf/mongodb.conf"
SYSCONFIG="/etc/sysconfig/mongod"
export PATH=$PATH:/data/mongodb/bin
DBPATH=`awk -F= '/^dbpath/{print $2}' "$CONFIGFILE"`
OPTIONS=" --config $CONFIGFILE"
mongod="/data/mongodb/bin/mongod"
echo "db path is: "$DBPATH
echo $mongod
MONGO_USER=mongodb
MONGO_GROUP=mongodb
[ -r "$SYSCONFIG" ] && source "$SYSCONFIG"
super() {
    su - $MONGO_USER -c "PATH=$PATH::/data/mongodb/bin; $*"
}
start()
{
  echo -n $"Starting mongod: "
#  daemon --user "$MONGO_USER" "numactl --interleave=all" $mongod $OPTIONS
#daemon --user "$MONGO_USER" $mongod $OPTIONS
#
#   su - $MONGO_USER -c "$mongod $OPTIONS" -m -p
#  su - $MONGO_USER
  $mongod $OPTIONS
#  super $mongod $OPTIONS
  echo $mongod$OPTIONS
  RETVAL=$?
  echo
  [ $RETVAL -eq 0 ] && touch /var/lock/subsys/mongod
}
stop()
{
  echo -n $"Stopping mongod: "
  killproc -p "$DBPATH"/mongod.lock -d 300 /data/mongodb/bin/mongod
  RETVAL=$?
  echo
  [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/mongod
}
restart () {
        stop
        start
}
ulimit -n 12000
RETVAL=0
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart|reload|force-reload)
    restart
    ;;
  condrestart)
    [ -f /var/lock/subsys/mongod ] && restart || :
    ;;
  status)
    status $mongod
    RETVAL=$?
    ;;
  *)
    echo "Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}"
    RETVAL=1
esac
exit $RETVAL  --------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  


  
二、用户授权和管理

1、进入mongodb的shell模式:

/usr/bin/mongo查看数据库列表:

show dbs查看当前db版本:

db.version();2、增加管理员权限:
userAdminAnyDatabase 这个角色拥有分配角色和用户的权限,但没有查写的缺陷
root 这是超级管理员
readWrite 有读写权限
read 有读权限

进入shell模式:

/usr/bin/mongo
> use admin //切换到admin数据库
> db.createUser(
... {
... user:"root",
... pwd:"test123",
... roles:[{role:"root",db:"admin"}]
... }
... );
Successfully added user: {
        "user" : "root",
        "roles" : [
                {
                        "role" : "root",
                        "db" : "admin"
                }
        ]
}
>> db.createUser(
... {
... user: “mongoRoot”,
... pwd: “testMongoDB2016”,
... roles:[{role:”userAdminAnyDatabase”, db:”admin”}]
... }
... );验证一下,在哪里注册用户的要去哪个db里认证:

db.auth(“mongoRoot”, “testMongoDB2016”)此后可以用这个mongoRoot账号去创建某一数据库管理账号:

> db.createUser({user:"test1",pwd:"test123",roles:[{"role":"readWrite","db":"test1"}]})但发现此时增加的账号不能在客户端登录,原因是mongodb版本错了:
先退出 mongod 服务

use admin
db.auth(“root”, “testMongoDB2016”)
db.shutdownServer()
再在无认证情况下打开 mongod
use admin
db.dropUser(“hhq163”)
db.system.version.update({ “_id”:”authSchema”},{$set:{“currentVersion”:3}})
db.createUser({user:”hhq163”,pwd:”test123456”,roles:[{“role”:”readWrite”,”db”:”admin”}]})
再以认证的形式启动mongodb

如果需要创建某一个新DB的账号:
需要在shell下执行:
use TestDB
db.createUser({user:”hhq163”,pwd:”test123456”,roles:[{“role”:”readWrite”,”db”:”TestDB”}]})

vim /usr/local/mongodb/bin/mongodb.conf
在文件末尾增加以下这一行:
auth=true

8、关闭数据库服务器:
use admin
db.shutdownServer()

如果开户安全认证,则要先认证:
use admin
db.auth(“root”, “testMongoDB2016”)
db.shutdownServer()

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-451635-1-1.html 上篇帖子: owncloud在CentOS上详细部署 下篇帖子: Linux centos6.5 磁盘矩阵
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表