一、安装配置
Linux平台安装MongoDB
MongoDB 提供了 linux 各发行版本 64 位的安装包,你可以在官网下载安装包。
下载地址
下载完安装包,并解压 tgz(以下演示的是 64 位 Linux上的安装)。
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz # 下载
tar -zxvf mongodb-linux-x86_64-3.4.2.tgz # 解压
mv mongodb-linux-x86_64-3.4.2/ /usr/local/mongodb # 将解压包拷贝到指定目录
macOS 平台安装MongoDB
MongoDB 提供了 OSX 平台上 64 位的安装包,你可以在官网下载安装包。
下载地址
接下来我们使用 curl 命令来下载安装:
cd /usr/local # 进入
sudo curl -O https://fastdl.mongodb.org/osx/mongodb-osx-x86_64-3.4.2.tgz # 下载
sudo tar -zxvf mongodb-osx-x86_64-3.4.2.tgz # 解压
sudo mv mongodb-osx-x86_64-3.4.2 mongod # 重命名
配置文件
配置文件路径/etc/mongod.conf
--auth = ture 开启auth权限【设置用户权限重要配置】
--dbpath: 指定数据目录,必选,不配置会启动报错;
--port: 指定服务监听的端口,默认为27017
--logpath:指定日志路径;
--logappend:指定日志是追加模式,或者每次重启MongoDB后清理日志;默认是追加模式;
--fork:用此选项创建子进程,在后台运行MongoDB;此选项必先开启logpath选项;
--bind_ip: 指定监听的接口;默认是127.0.0.1;
--httpinterface: 设定是否在1000的端口启动一个微型的HTTP服务器;默认不开启;
--nounixsocket: 设置是否使用UNIX socket;
--noscripting: 设置是否完全禁止服务器端JavaScript脚本的运行;
二、环境变量
在 .bashrc, or .bash_profile等文件里面配置
export PATH="$PATH:/usr/local/mongodb/bin"
之后可以全局使用
mongod
mongo
否则,必须这样
/usr/local/mongodb/bin/mongod
or
/usr/local/mongodb/bin$ ./mongod
三、启动和关闭
先设置好配置文件/etc/mongod.conf后,每次手动用命令启动
mongod -f /etc/mongod.conf
设置开机启动
echo “mongod -f /etc/mongod.conf” >>/etc/rc.d/rc.local
另外可以用mongod命令来启动MongoDB,因为mongod每次启动需要带参数,不然会造成错误,不建议用;
service mongod start 或者 chkconfig mongod on
强制关闭MongoDB(不建议使用);
service mongod stop
或者,从MongoDB的admin中关闭(推荐用这种方法):
> use admin
switched to db admin
> db.shutdownServer()
server should be down...
或者
mongod --shutdown
使用shutdownServer关闭MongoDB,如有MongoDB主从服务器,则在服务关闭前同步主从服务器;强制关闭则不会;
四、用户权限设置
掌握权限,理解下面基本内容
- MongoDB是没有默认管理员账号,所以要先添加管理员账号,再开启权限认证。
- 切换到admin数据库,添加的账号才是管理员账号。
- 用户只能在用户所在数据库登录,包括管理员账号。
- 管理员可以管理所有数据库,但是不能直接管理其他数据库,要先在admin数据库认证后才可以。
添加管理员账号
# mongo --host=127.0.0.1 --port=27017
MongoDB shell version: 3.2.7
connecting to: 127.0.0.1:27017/test
> use admin
> show collections
> db.createUser(
{
user: "admin",
pwd: "mongodb:passok",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
> db.shutdownServer()
开启权限验证
# echo 'auth = true' >> /etc/mongod.conf
# mongod -f /etc/mongod.conf
验证权限是否生效
# mongo
MongoDB shell version: 3.2.7
connecting to: test
> use admin
switched to db admin
> db.auth('admin', 'mongodb:passok')
1
> show dbs
添加普通用户
> use mydb
switched to db mydb
> db.createUser(
{
user: "tonny",
pwd: "tonny@passok",
roles: [ { role: "readWrite", db: "mydb" } ]
}
)
Successfully added user: {
"user" : "tonny",
"roles" : [
{
"role" : "readWrite",
"db" : "mydb"
}
]
}
> exit
bye
[root@snails ~]# mongo
MongoDB shell version: 3.2.7
connecting to: test
> use mydb
switched to db mydb
> db.auth('tonny','tonny@passok')
1
MongoDB数据库角色
角色说明:
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限