Linux下MongoDB的安装

3 篇文章 0 订阅
3 篇文章 0 订阅

按照菜鸟教程来的: http://www.runoob.com/mongodb/mongodb-linux-install.html

还是说问题

将路径加入path这步这样加了后面启动不了 

解决办法  mv mongodb-linux-x86_64-3.6.3/* /usr/local/mongodb 或者将<mongodb-install-directory>指定到正确的目录/usr/local/mongodb /mongodb-linux-x86_64-3.6.3。

其实依然是那几个步骤:创数据库目录 创日志目录和文件  创conf文件

 

我的配置文件:

#启用日志文件,默认启用

journal=true

#这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false

quiet=false

# 日志文件位置

logpath=/usr/local/server/mongodb/logs/log

# 以追加方式写入日志

logappend=true

# 是否以守护进程方式运行

fork = true

# 默认27017

port = 27017

# 数据库文件位置

dbpath=/usr/local/server/mongodb/data

详尽的配置:https://blog.csdn.net/wlzx120/article/details/52301812

以这种方式启动 ./mongod --config  /usr/local/mongodb/mongodb.conf可能会包

mongodb启动时报错ERROR: child process failed, exited with error number 1

原因由于conf中日志文件配置必须指定到文件 而不是目录。

ps -ef|grep mongodb 就能看到mong的进程信息,或者直接登陆验证下就好了

 

 

使用系统服务命令启动需要先将服务加入到系统服务中,附录:将mongod添加到系统服务 

service mongod start|stop|restart

这一步没什么毛病 备份下

 

一、将mongod服务添加为系统服务

MongoDB安装之后,每次都需要运行命令加参数来启动,不便于管理,这里可以将其添加到系统服务,方法如下:

1、创建文件

linux系统服务启动文件都存放在  /etc/init.d/ 下面,service mongod start 这样的命令是通过运行该目录下的脚本实现管理的,所以需要创建一个脚本文件mongod并修改读写权限

>touch mongod

>chmod 755 mongod 

另外还需要用到一个文件来保存服务pid,service mongod stop 命令就是通过这个文件读取服务pid的,可以建立在MongoDB的安装目录下面,

>cd /usr/local/server/mongodb/

>touch mongod.pid

>chmod 755 mongod.pid

2、编写mongod脚本,以下为编写好的脚本示例:

 

##--------------------------------------------------------

#!/bin/bash     

#chkconfig:35 23 34   

#description: MongoDB  service

#set -x

 

if [ -f  /etc/init.d/functions ] ; then

##载入functions,. 在这里相当于source的功能

. /etc/init.d/functions     

fi

 

##服务名,会多处调用

prog=mongod  

 

##状态返回值,functions 函数会调用这个值

RETVAL=0  

 

mongod=/usr/local/server/mongodb/bin/mongod

MONGODB_CONF_FILE=/usr/local/server/mongodb/mongodb.conf

lockfile=/var/lock/subsys/${prog}                          ##subsys目录下的文件是用于给其他程序判断服务的实例运行状态的

pidfile=/usr/local/server/mongodb/mongod.pid

 

start() {

      echo  -n $"Starting $prog: "

      daemon $mongod  --config $MONGODB_CONF_FILE ##daemon调用后面的命令执行情况

  pgrep mongod>${pidfile}                     ##写入pid到pidfile

      RETVAL=$?

      echo 

      [ $RETVAL  -eq  0  ] &&  touch ${lockfile}

      return $RETVAL

}

 

stop () {

      echo  -n $"Stopping $prog: "

      killproc -p ${pidfile}    ##killproc 从pidfile 获取到pid,并杀死

      RETVAL=$?

      echo 

      [ $RETVAL  -eq  0  ] &&  /bin/rm -f ${lockfile}

      return $RETVAL

}

 

 

case $1 in 

start) 

start

;;

 

stop)

stop

;;

 

restart)

stop

start

;;

 

*)

echo $"Usage: $0 {start|stop|restart}"

exit 2

;;

esac

 

exit $?

##-------------------------------------------------------------------

 

3、通过这个脚本就可以实现系统服务启动、关闭、重启mongod服务了,然后我们可以让他开机启动:

>chkconfig mongod on

 

 

 

 

--------------

二、用户授权和管理

1、mongodb安装好后第一次进入是不需要密码的,也没有任何用户,通过shell命令可直接进入,cd到mongodb目录下的bin文件夹,执行命令./mongo即可

运行如下:

[root@namenode mongodb]# ./bin/mongo

MongoDB shell version: 1.8.2

connecting to: test

> use test;

switched to db test

2、添加管理用户(mongoDB 没有无敌用户root,只有能管理用户的用户 userAdminAnyDatabase),

>use admin

>db.createUser( {user: "admin",pwd: "123456",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]})

注:添加完用户后可以使用show users或db.system.users.find()查看已有用户

3、添加完管理用户后,关闭MongoDB,可以使用db.shutdownServer()关闭

并使用权限方式再次开启MongoDB,这里注意不要使用kill直接去杀掉mongodb进程,(如果这样做了,请去data/db目录下删除mongo.lock文件),

4、使用权限方式启动MongoDB

./mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/mongod.log --fork --auth

或者在配置文件中修改:

 auth = true

#noauth = true

5、进入mongo shell,使用admin数据库并进行验证,如果不验证,是做不了任何操作的。 

> use admin

> db.auth("admin","123456")   #认证,返回1表示成功

6、验证之后还是做不了操作,因为admin只有用户管理权限,下面创建用户,用户都跟着库走,

> use mydb

> db.createUser({user: "root",pwd: "123456",roles: [{ role: "readWrite", db: "mydb" }]})

 //db.createUser({user:"Liwb",pwd:"Liwb94",roles:[{role:"readWrite",db:"epg" },{role:"dbAdmin",db:"epg" }]});

7、使用创建的用户root登录进行数据库操作:

[root@localhost mongodb]# ./mongo 127.0.0.1/mydb -uroot -p

MongoDB shell version: 3.2.9

Enter password:

connecting to: 127.0.0.1/mydb

> db

mydb

> use mydb

switched to db mydb

> show collections

然后就可以进行增删改查各种数据操作...

 

默认不能被其他电脑连接 需要在Windows上测试的话  在conf文件里配置

 

#绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定默认本地所有IP

bind_ip指访问ip,设置0.0.0.0就没有限制,都可以连接

同时

 auth = true就必须要配了

并且要设置防火墙

 

iptables -A INPUT -p tcp -m tcp --dport 27017 -j ACCEPT

这样往往不成功 因为没添加成功

解决办法直接编辑/etc/sysconfig/iptables-config文件

               1.编辑/etc/sysconfig/iptables文件:vi /etc/sysconfig/iptables-config
                   加入内容并保存:-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 27017 -j ACCEPT

 

               2.重启服务:/etc/init.d/networkrestart

 

 

               3.查看端口是否开放:/sbin/iptables -L -n

 

https://blog.csdn.net/wlzx120/article/details/52301799 这是个很详尽的教程

 

 

mongo的roles

 Built-In Roles(内置角色):
    1. 数据库用户角色:read、readWrite;
    2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
    3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
    4. 备份恢复角色:backup、restore;
    5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
    6. 超级用户角色:root  
    // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
    7. 内部角色:__system
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值