###一、mongodb的安装和配置
1.下载压缩包:mongodb-linux-i686-v3.2-latest.tgz,下载之前,先查看自己的服务器是多少位的,命令:getconf
LONG_BIT(有很多的方式,可以自行百度)
2. 解压安装:tar zxf mongodb-linux-i686-v3.2-latest.tgz(可以放置在根目录下)
3. 移动解压后的文件到mongodb:mv 解压后文件名 /usr/local/mongodb
4. 进入mongodb中创建db和logs: mkdir db/logs
5. /etc/profile中添加
#mongodb
export MONGODB_HOME=/usr/local/mongodb
export PATH=$MONGODB_HOME/bin:$PATH
6.在mongodb的bin文件中建立mongodb.conf文件:
dbpath=/usr/local/mongodb/db
logpath=/usr/local/mongodb/logs/mongodb.log
port=27017
fork=true
#auth=true //auth=true的时候登录mongodb需要验证用户名和密码
7.通过配置文件启动:
[root@localhost bin]# ./mongod -f mongodb.conf --journal
8.连接mongodb、进入mongodb的bin目录:
[root@localhost bin]# ./mongo
MongoDB shell version: 3.2.20-16-g4c2d1a88c1
connecting to: test
>
已经连接上,如果再mongodb.conf配置文件中没有配置auth=true的话可以直接使用如下:
> show dbs;
admin 0.078GB
local 0.078GB
yiwen_test 0.078GB
此时开始创建用户
> use test_yiwen
switched to db test_yiwen
> db.createUser({ user: "test",pwd: "1234",customData:{name:"test"},roles:[{ role: "readWrite",db: "test_yiwen" }]})
Successfully added user: {
"user" : "test",
"customData" : {
"name" : "test"
},
"roles" : [
{
"role" : "readWrite",
"db" : "test_yiwen"
}
]
}
//表示成功了。。。
use test_yiwen //表示创建库,如果再创建了库,而没用使用它的时候,系统会自动删除
exit //退出mongo的连接
roles的可选项有:
1. 数据库用户角色:read、readWrite;
2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 备份恢复角色:backup、restore;
5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超级用户角色:root
修改mongodb.conf
去掉#auth=true 前的#。
重新启动mongod
重新连接 : ./mongo
报以下的错:
原因:需要用户名和密码
[root@localhost bin]# ./mongo
MongoDB shell version: 3.2.20-16-g4c2d1a88c1
connecting to: test
> show dbs;
2018-06-27T17:53:14.783+0800 E QUERY [thread1] Error: listDatabases failed:{
"ok" : 0,
"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
"code" : 13
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1
shellHelper.show@src/mongo/shell/utils.js:781:19
shellHelper@src/mongo/shell/utils.js:671:15
@(shellhelp2):1:1
>
每次登陆前需要先:
> use test_yiwen
switched to db test_yiwen
> db.auth('test','1234')
1
>
// 1 表示认证成功了,,,
可以添加数据了,,,,
> use test_yiwen
switched to db test_yiwen
> db.auth('test','1234')
1
> db.Hello.insert({name:'World'})
WriteResult({ "nInserted" : 1 })
> show collections;
Hello
system.indexes
//注释
db.Hello.insert({name:'World'}) //添加数据
WriteResult({ "nInserted" : 1 }) //表示成功
接下来就可以使用idea进行连接使用了,,,,因为我们创建角色的时候使用的是readWrite,所以登陆之后show dbs;等一些指令不能使用,可以创建一个role是userAdminAnyDatabase的用户。
2019.3.21 更改
1、64位系统
按照以上的配置,总是报错,后采用一下的启动方式:(不需要创建配置文件)
无验证启动:./mongod --dbpath=/usr/local/mongodb/db --logpath=/usr/local/mongodb/logs/mongodb.log --logappend --port=27017 --fork
用户名密码:./mongod --dbpath=/usr/local/mongodb/db --logpath=/usr/local/mongodb/logs/mongodb.log --logappend --port=27017 --fork --auth