zoukankan      html  css  js  c++  java
  • mongodb初探之安装与基础配置

    ./mongod --dbpath /home/goojia/power_mongodb_data --port 47017 --maxConns 1000 --fork --logpath /home/goojia/power_mongodb_data/mongodb.log --logappend
    ./mongod --dbpath /home/goojia/mongodb_data/ --maxConns 2000 --fork --logpath /home/goojia/mongodb_data/mongodb.log --logappend --rest

     
     
    以下安装部分是在自己的32位centos5.6虚拟机上安装配置,不一定完全正确,仅供学习交流使用,相关部分请参考网上其他教程

    1.下载安装mongodb

    [root@niutian365 soft]# wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-1.8.3.tgz
    [root@niutian365 soft]# tar zxvf mongodb-linux-i686-1.8.3.tgz 
    [root@niutian365 soft]# mv mongodb-linux-i686-1.8.3 /data/mongodb
    [root@niutian365 soft]# mkdir -p /data/mongodb/logs
    [root@niutian365 soft]# mkdir -p /data/mongodb/data

    2.启动mongodb
    [root@niutian365 mongodb]# cd /data/mongodb/
    [root@niutian365 mongodb]# ./bin/mongod -h    #查看启动帮助
    [root@niutian365 mongodb]# ./bin/mongod./bin/mongod --auth --port 27908 --dbpath=/data/mongodb/data/ --logpath=/data/mongodb/logs/mongod.log --logappend &
    [root@niutian365 mongodb]# ps aux | grep mongodb

    #获取进程号2397 同时会在/data/mongodb/data/ 下产生mongod.lock且包含同样的进程号则表示启动成功 

    3.关闭关闭Mongod
    在db shell模式下输入如下命令
    > db.shutdownServer()

    #killall mongod 或者是  kill [pid] 不建议使用

    4.体验mongodb
    [root@niutian365 mongodb]# ./bin/mongo
    MongoDB shell version: 1.8.3
    connecting to: test

    > db.createCollection("mytest");
    { "ok" : 1 }
    > show collections
    mytest
    system.indexes
    >db.mytest.insert({uid:1,username:"test.A",age:25});
    >db.mytest.insert({uid:2,username:"test.B",age:26});
    > db.mytest.find();
    { "_id" : ObjectId("4e5c5b31713338f6ce3bbd4b"), "uid" : 1, "username" : "test.A", "age" : 25 }
    { "_id" : ObjectId("4e5c5b37713338f6ce3bbd4c"), "uid" : 2, "username" : "test.B", "age" : 26 }

    5.基础应用配置
    ./bin/mongod -h 查看启动参数配置
    ./bin/mongo -h 查看命令行shell访问参数配置
    官方文档:http://www.mongodb.org/pages/viewpage.action?pageId=6750283
    开启MongoDB 服务时不添加任何参数时,可以对数据库任意操作,
    而且可以远程访问数据库,所以推荐只是在开发是才这样不设置任何参数。
    如果启动的时候指定--auth参数,可以从阻止根层面上的访问和连接

    基本的启动参数配置如下:
    只允许某ip访问:
    mongod --bind_ip 127.0.0.1

    指定服务端口:
    mongod --bind_ip 127.0.0.1 --port 27908

    添加用户认证:
    mongod --bind_ip 127.0.0.1 --port 27908 –auth

    添加用户及授权
    ./bin/mongo
    > show dbs
    admin   (empty)
    local   (empty)

    在刚安装完毕都默认有一个admin数据库,而admin.system.users中将会保存比在其它数据库中设置的用户权限更大的用户信息。

    当admin.system.users中一个用户都没有时,即使mongod启动时添加了--auth参数,如果没有在admin数据库中添加用户,
    此时不进行任何认证还是可以做任何操作,直到在admin.system.users中添加了一个用户。

    下面在test中创建用户名为mytest密码为123456的用户,如下:
    > use test   
    switched to db test   
    > db.addUser("mytest","123456")   
    {
            "_id" : ObjectId("4e5ddb9ac13f8ffc3356cdc2"),
            "user" : "mytest",
            "readOnly" : false,
            "pwd" : "488f8a0ffcb88e098f55aed6a719d4c6"
    }


    下面在admin中创建用户名为root密码为123456的用户,如下:
    > use admin   
    switched to db admin
    > db.addUser("root", "123456")
    {
            "_id" : ObjectId("4e5dd826ad785b2ed2c2ff01"),   
            "user" : "root",   
            "readOnly" : false,   
            "pwd" : "34e5772aa66b703a319641d42a47d696"   
    }
    > db.auth("root", "123456")   

    如果认证成功会显示1否则显示0,

    用以下命令可以查看特定的数据库的用户信息
    > use admin   
    switched to db admin   
    > db.system.users.find()
    { "_id" : ObjectId("4e5dd826ad785b2ed2c2ff01"), "user" : "root", "readOnly" : false, "pwd" : "34e5772aa66b703a319641d42a47d696" }
    > use test
    switched to db test
    > db.system.users.find()
    { "_id" : ObjectId("4e5ddb9ac13f8ffc3356cdc2"), "user" : "mytest", "readOnly" : false, "pwd" : "488f8a0ffcb88e098f55aed6a719d4c6" }
    >

    下面我们试验一下用户的权限设置是否正确:

    [root@niutian365 mongodb]# ./bin/mongo --port 27908   
    MongoDB shell version: 1.8.3
    connecting to: 127.0.0.1:27908/test   
    > use test   
    switched to db test   
    > db.system.users.find();   
    error: {
    "$err" : "unauthorized db:foo lock type:-1 client:127.0.0.1",   
    "code" : 10057   
    }
    > use admin   
    switched to db admin   
    > db.system.users.find();   
    error: {
    "$err" : "unauthorized db:admin lock type:-1 client:127.0.0.1",   
    "code" : 10057   
    }
    >

    连接mongodb时,如果不指定库名,那么会自动连接到test库,
    若test库设置了用户名和密码则需要auth验证用户名和密码后方可访问
    所以我们需要显示指定需要连接的库名及用户名和密码

    [root@niutian365 mongodb]# ./bin/mongo --port 27908 admin -uroot -p123456
    MongoDB shell version: 1.8.3   
    connecting to: 127.0.0.1:27908/admin   
    > show collections
    system.indexes   
    system.users   
    > use test   
    switched to db test   
    > show collections   
    system.indexes   
    system.users   
    mytest

    可以看到root这个用户有所有库的操作权限

    下面试试mytest这个用户有什么权限:
    [root@niutian365 mongodb]# ./bin/mongo --port 27908 test -umytest -p123456   
    MongoDB shell version: 1.8.3
    connecting to: 127.0.0.1:27908/test   
    > show collections 
    system.indexes   
    system.users   
    mytest   
    > use admin   
    switched to db admin
    > show collections
    Wed Aug 31 14:59:24 uncaught exception: error: {
            "$err" : "unauthorized db:admin lock type:-1 client:127.0.0.1",
            "code" : 10057
    }
    > use mytest
    switched to db mytest
    > show collections 
    Wed Aug 31 14:59:58 uncaught exception: error: {
            "$err" : "unauthorized db:admin lock type:-1 client:127.0.0.1",
            "code" : 10057
    }

    通过结果我们看到, 由于mytest用户是在test库里建立的用户,所以它不具有操作其它数据库的权限

    更改密码(为已经存在的用户更改密码):
    db.addUser("mytest","654321")

    删除用户:
    db.system.users.remove({user:"test"})

    mongodb的远程用户连接:
    mongo –uusername –ppwd ServerIP:port/dbname
    其中port默认为27017
    如下:
    [root@niutian365 mongodb]# ./bin/mongo  -uroot -p123456 192.168.2.150/admin


    6.php的mongodb扩展安装
    https://github.com/mongodb/mongo-php-driver下载:
    [root@niutian365 soft]# wget https://nodeload.github.com/downloads/mongodb/mongo-php-driver/mongodb-mongo-php-driver-9baf0d3.tar.gz --no-check-certificate
    [root@niutian365 soft]# tar zxvf mongodb-mongo-php-driver-9baf0d3.tar.gz
    [root@niutian365 soft]# cd mongodb-mongo-php-driver-9baf0d3
    [root@niutian365 mongodb-mongo-php-driver-9baf0d3]# /usr/local/php/bin/phpize
    [root@niutian365 mongodb-mongo-php-driver-9baf0d3]# ./configure --with-php-config=/usr/local/php/bin/php-config
    [root@niutian365 mongodb-mongo-php-driver-9baf0d3]# make
    [root@niutian365 mongodb-mongo-php-driver-9baf0d3]# make install

    编辑 php.ini 添加:
    extension=mongo.so
    重启apache
     
     
  • 相关阅读:
    把VB.NET代码转换为C#代码的方法
    离散数学 第二章 谓词逻辑 26 前束范式
    离散数学 第二章 谓词逻辑 27 谓词演算的推理理论
    asp.net中怎样用Javascript控制RequiredFieldValidator控件什么时候启用,什么时候不启用验证?
    离散数学中的IFF标记
    BIRT Overview
    离散数学 第二章 谓词逻辑 25 谓词演算的等价式和蕴涵式
    getRemoteAddr()和getRemoteHost()的区别
    scp 不用密码
    利用spring实现javamail功能
  • 原文地址:https://www.cnblogs.com/opaljc/p/3058697.html
Copyright © 2011-2022 走看看