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
如果认证成功会显示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
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
如果认证成功会显示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