MongoDB数据库安装

一、MongoDB的安装:

环境:

CentOS 7

MongoDB 3.4.9

下载MongoDB:

首先去MongoDB官网下载MongoDB,地址https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.9.tgz。将下载的文件放到/usr/local/mongodb 目录下。

解压:

解压下载到的tgz文件,并给文件夹重命名为mongodb,然后创建db、logs目录分别用来存放数据和日志。如下:

配置:

dbpath=/opt/mongodb/db
logpath=/opt/mongodb/logs/mongodb.log
port=27017
fork=true
nohttpinterface=true
复制代码

执行结果如下:

测试:

做完这一切之后,我们就可以启动MongoDB了,还是在bin目录下,执行./mongod -f mongodb.conf命令表示启动MongoDB,然后执行mongo命令表示表示进入到MongDB的控制台,进入到控制台之后,我们输入db.version()命令,如果能显示出当前MongoDB的版本号,说明安装成功了。如下:

默认情况下,连接地址是127.0.0.1:27017,连接的数据库是test数据库,我们也可以手动指定连接地址和连接的数据库:

mongo 127.0.0.1:27017/admin 系统服务启动: 使用系统服务命令启动需要先将服务加入到系统服务中,如下脚本配置文件:

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
复制代码

service mongod start|stop|restart

注:可以将mongodb临时加入系统路径变量中,这样可以不用输入路径直接启动,代码如下:

export PATH=/usr/local/server/mongodb/bin:$PATH

然后可以查看是否成功:echo $PATH

二、用户授权和管理

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,并使用权限方式再次开启MongoDB,这里注意不要使用kill直接去杀掉mongodb进程,(如果这样做了,请去data/db目录下删除mongo.lock文件),可以使用db.shutdownServer()关闭
4、使用权限方式启动MongoDB
./mongod --dbpath=/usr/local/server/mongodb/data --logpath=/usr/local/server/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" }]})
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
然后就可以进行增删改查各种数据操作...
复制代码

问题:

当我们敲入db.auth("admin", "admin")时,返回为0,出现Error: Authentication failed。 解决方法: 手动添加admin账户,创建成功后,再次db.auth("admin", "123456"),返回1。代码如下:

db.createUser(  
  {  
    user: "admin",  
    pwd: "123456",  
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]  
  }  
)
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值