一、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