MongoDB 安装配置及用户权限
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,参考: http://www.runoob.com/mongodb/mongodb-linux-install.html介绍:a MongoDB是由C++语言编写的一个基于分布式文件存储的开源数据库系
千家信息网最后更新 2025年01月20日MongoDB 安装配置及用户权限
参考: http://www.runoob.com/mongodb/mongodb-linux-install.html
介绍:
a MongoDB是由C++语言编写的一个基于分布式文件存储的开源数据库系统,它的目的在于为WEB应用提供可扩展的高性能数据存储解决方案。
b MongoDB是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系型数据库的。它支持的数据结构非常松散,会将数据存储为一个文档,数据结构由键值对(key=>value)组成,是类似于json的bson格式,字段值可以包含其它文档、数组和文档数组,因此可以存储比较复杂的数据类型。
c MongoDB最大的特点就是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系型数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
d MongoDB的主要特点(来自于网上,主要为了我们初步了解)
d.1 MongoDB提供了一个面向文档存储,操作起来比较简单和容易的非关系型数据库。
d.2 你可以在MongoDB记录中设置任何属性的索引来实现更快的排序。
d.3 你可以通过本地u或者网络创建数据镜像,这使得MongoDB含有更强的扩展性。
d.4 如果负载的增加(需要更多的存储空间和更强的处理能力),它可以分布在计算机网络中的其它节点上,这就是所谓的分片。
d.5 MongoDB支持丰富的查询表达式,查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象和数组。 d.6 MongoDB使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段。 d.7 MongoDB中的Map/Reduce主要是用来对数据进行批量处理和聚合操作,Map函数调用emit(key,value)遍历集合中所有的记录,将key于value传递给Reduce函数进行处理。另外Map函数和Reduce函数是使用JavaScript编写的,所以可以通过db.runCommand和mapreduce命令来执行MapReduce操作。 d.8 GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。
d.9 MongoDB允许在服务端执行脚本,可以用JavaScript编写某个函数,直接在服务端执行,也可以吧函数的定义存储在服务端,下次直接调用即可。
d.10 MongoDB支持各种编程语言:RUBY、PYTHON、JAVA、C++、PHP、C#等多种语言并且MongoDB的安装也非常简单
f MongoDB官网:http://www.mongodb.org/
g MongoDB学习网站:http://www.runoob.com/mongodb
一、MongoDB的安装
下载社区版
https://www.mongodb.com/download-center#community
tar -zxvf mongodb-linux-x86_64-3.2.8.tgz
建立两个目录:
/u01/mongnodb/
/u01/mongodb/data/db
/u01/mongodb/logs
修改别名
vim /etc/hosts
127.0.0.1 bogon
启动
./bin/mongod --dbpath /u01/mongodb/data/db
输入命令lsof -i :27017,监测端口已经在使用中,所以说启动已经完成。
二、MongoDB配置
MongoDB的启动参数,可以在命令行指定,也可以通过配置文件
./mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/log/mongod.log --fork --auth
或者
./mongo --config=/u01/mongnodb/mongno.conf
cat /u01/mongnodb/mongno.conf
#Data file Path
#dbpath=/u01/mongodb/mongodb-linux-x86_64-rhel70-3.4.9/bin/mongod --dbpat
dbpath = /u01/mongodb/data/db
#Log file path
logpath = /u01/mongodb/mongodb-linux-x86_64-rhel70-3.4.9/logs/mongodb.log
logAppend=true
#绑定IP
#bind_ip=127.0.0.1
#port
port = 27017
# 以守护进程方式启动
fork = true
#日志输出方式,使用追加的方式写日志
logappend = true
#PID File
pidfilepath=/u01/mongodb/mongodb-linux-x86_64-rhel70-3.4.9/mongodb.pid
#关闭http接口,默认关闭27018端口访问
#nohttpinterface = true
#声明这是一个集群分片
#shardsvr = true
#设置每个数据库将被保存在一个单独的目录
#directoryperdb=true
#开启认证
#auth = true
#设置开启简单的rest API ,置后打开28017网页端口
#rest = true
##分片配置
sharding:
##指定config server
configDB: 10.96.29.2:29017,10.96.29.2:29018,10.96.29.2:29019
三、MongoDB用户授权和管理
1、mongodb安装好后第一次进入是不需要密码的,也没有任何用户,通过shell命令可直接进入,cd到mongodb目录下的bin文件夹,执行命令./mongo即可
# ./bin/mongo
1)显示数据库
> show dbs
admin 0.000GB
local 0.000GB
2)使用/创建admin的库。权限管理就要使用admin数据库
> use admin
switched to db admin
3)我第一次登陆时只有一个system.version表,system.users都没有,没关系可以建一个用户就有了。
system.user表,这张表是用来存放超级管理员的
> show collections
system.users
system.version
4)查询system.user表中含有数据否
> db.system.users.find()
{ "_id" : "admin.admin", "user" : "admin", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "Fyaf2IGrGbC+kDyTZpe/tg==", "storedKey" : "Um7slisABOWPosz8h0XsxV18b68=", "serverKey" : "AwpUC8YlyvpGnncuxUaYzHKEkuw=" } }, "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }
{ "_id" : "svideo.vdb", "user" : "vdb", "db" : "svideo", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "C8xTDX0YZqOxybT/2lkvgw==", "storedKey" : "9Vty4qpDso2F5793zIOoscobefk=", "serverKey" : "q8d+EwCuQcCLeTTGIAHC3djnKmw=" } }, "roles" : [ { "role" : "dbOwner", "db" : "svideo" } ] }
2、添加管理用户(mongoDB 没有无敌用户root,只有能管理用户的用户 userAdminAnyDatabase),
db.createUser({
user:'admin',
pwd:'123456',
roles:[
{role:'userAdminAnyDatabase',db:'admin'},
{role:'dbAdminAnyDatabase',db:'admin'},
{role:'clusterMonitor',db:'admin'}
]
})
use mydb
db.createUser({
user:'vdb',
pwd:'123456',
roles:[{role:'dbOwner',db:'svideo'}]
})
角色:
userAdminAnyDatabase
dbOwner
readWrite
3、添加完管理用户后,关闭MongoDB,并使用权限方式再次开启MongoDB,这里注意不要使用kill直接去杀掉mongodb进程,(如果这样做了,请去data/db目录下删除mongo.lock文件),可以使用db.shutdownServer()关闭
> db.shutdownServer()
2017-09-15T21:23:01.223+0800 I NETWORK [thread1] trying reconnect to 127.0.0.1:27017 (127.0.0.1) failed
2017-09-15T21:23:01.223+0800 W NETWORK [thread1] Failed to connect to 127.0.0.1:27017, in(checking socket for error after poll), reason: Connection refused
2017-09-15T21:23:01.223+0800 I NETWORK [thread1] reconnect 127.0.0.1:27017 (127.0.0.1) failed failed
server should be down...
4、添加好用户后,就可以使用权限方式启动MongoDB
./mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/log/mongod.log --fork --auth
或者
./mongo --config=/u01/mongnodb/mongno.conf
在mongno.conf指定参数 auth = true
5、进入mongo shell,使用admin数据库并进行验证,如果不验证,是做不了任何操作的。
> use admin
> db.auth("admin","123456") #认证,返回1表示成功
6、验证之后还是做不了操作,因为admin只有用户管理权限,下面创建用户,用户都跟着库走,
> use mydb
> db.createUser({user: "app",pwd: "123456",roles: [{ role: "readWrite", db: "mydb" }]})
7、使用创建的用户root登录进行数据库操作:
mongo 127.0.0.1/mydb -uapp -p
mongo 127.0.0.1/mydb -uvdb -p
或者使用:
./mongo -u username -p password --port port --authenticationDatabase databaseName
./mongo databaseName -u username -p password --port port
然后就可以进行增删改查各种数据操作…
Mongodb的关闭:
前台运行:(不以守护进程方式启动)
如果没有使用--fork,直接可以前台退出终端关闭。通过这种方式,Mongodb将会自己做清理退出,把没有写好的数据写完成,并最终关闭数据文件。要注意的是这个过程会持续到所有操作都完成。
后台运行:(以守护进程方式启动 fork = true)
如果使用--fork在后台运行mongdb服务,那么就要通过向服务器发送shutdownServer()消息来关闭。
1、普通命令:
$ ./mongod
> use admin
> db.shutdownServer()
Mongodb启动帮助
mongod --help
如果启动时指定端口号了,不是默认的27017, 连接时也必须指定端口
mongo 127.0.0.1:27019
参考:
http://www.runoob.com/mongodb/mongodb-linux-install.html
MongoDB Authentication slow my TPS?
http://www.mongoing.com/archives/4623
参考: http://www.runoob.com/mongodb/mongodb-linux-install.html
介绍:
a MongoDB是由C++语言编写的一个基于分布式文件存储的开源数据库系统,它的目的在于为WEB应用提供可扩展的高性能数据存储解决方案。
b MongoDB是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系型数据库的。它支持的数据结构非常松散,会将数据存储为一个文档,数据结构由键值对(key=>value)组成,是类似于json的bson格式,字段值可以包含其它文档、数组和文档数组,因此可以存储比较复杂的数据类型。
c MongoDB最大的特点就是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系型数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
d MongoDB的主要特点(来自于网上,主要为了我们初步了解)
d.1 MongoDB提供了一个面向文档存储,操作起来比较简单和容易的非关系型数据库。
d.2 你可以在MongoDB记录中设置任何属性的索引来实现更快的排序。
d.3 你可以通过本地u或者网络创建数据镜像,这使得MongoDB含有更强的扩展性。
d.4 如果负载的增加(需要更多的存储空间和更强的处理能力),它可以分布在计算机网络中的其它节点上,这就是所谓的分片。
d.5 MongoDB支持丰富的查询表达式,查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象和数组。 d.6 MongoDB使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段。 d.7 MongoDB中的Map/Reduce主要是用来对数据进行批量处理和聚合操作,Map函数调用emit(key,value)遍历集合中所有的记录,将key于value传递给Reduce函数进行处理。另外Map函数和Reduce函数是使用JavaScript编写的,所以可以通过db.runCommand和mapreduce命令来执行MapReduce操作。 d.8 GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。
d.9 MongoDB允许在服务端执行脚本,可以用JavaScript编写某个函数,直接在服务端执行,也可以吧函数的定义存储在服务端,下次直接调用即可。
d.10 MongoDB支持各种编程语言:RUBY、PYTHON、JAVA、C++、PHP、C#等多种语言并且MongoDB的安装也非常简单
f MongoDB官网:http://www.mongodb.org/
g MongoDB学习网站:http://www.runoob.com/mongodb
一、MongoDB的安装
下载社区版
https://www.mongodb.com/download-center#community
tar -zxvf mongodb-linux-x86_64-3.2.8.tgz
建立两个目录:
/u01/mongnodb/
/u01/mongodb/data/db
/u01/mongodb/logs
修改别名
vim /etc/hosts
127.0.0.1 bogon
启动
./bin/mongod --dbpath /u01/mongodb/data/db
输入命令lsof -i :27017,监测端口已经在使用中,所以说启动已经完成。
二、MongoDB配置
MongoDB的启动参数,可以在命令行指定,也可以通过配置文件
./mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/log/mongod.log --fork --auth
或者
./mongo --config=/u01/mongnodb/mongno.conf
cat /u01/mongnodb/mongno.conf
#Data file Path
#dbpath=/u01/mongodb/mongodb-linux-x86_64-rhel70-3.4.9/bin/mongod --dbpat
dbpath = /u01/mongodb/data/db
#Log file path
logpath = /u01/mongodb/mongodb-linux-x86_64-rhel70-3.4.9/logs/mongodb.log
logAppend=true
#绑定IP
#bind_ip=127.0.0.1
#port
port = 27017
# 以守护进程方式启动
fork = true
#日志输出方式,使用追加的方式写日志
logappend = true
#PID File
pidfilepath=/u01/mongodb/mongodb-linux-x86_64-rhel70-3.4.9/mongodb.pid
#关闭http接口,默认关闭27018端口访问
#nohttpinterface = true
#声明这是一个集群分片
#shardsvr = true
#设置每个数据库将被保存在一个单独的目录
#directoryperdb=true
#开启认证
#auth = true
#设置开启简单的rest API ,置后打开28017网页端口
#rest = true
##分片配置
sharding:
##指定config server
configDB: 10.96.29.2:29017,10.96.29.2:29018,10.96.29.2:29019
三、MongoDB用户授权和管理
1、mongodb安装好后第一次进入是不需要密码的,也没有任何用户,通过shell命令可直接进入,cd到mongodb目录下的bin文件夹,执行命令./mongo即可
# ./bin/mongo
1)显示数据库
> show dbs
admin 0.000GB
local 0.000GB
2)使用/创建admin的库。权限管理就要使用admin数据库
> use admin
switched to db admin
3)我第一次登陆时只有一个system.version表,system.users都没有,没关系可以建一个用户就有了。
system.user表,这张表是用来存放超级管理员的
> show collections
system.users
system.version
4)查询system.user表中含有数据否
> db.system.users.find()
{ "_id" : "admin.admin", "user" : "admin", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "Fyaf2IGrGbC+kDyTZpe/tg==", "storedKey" : "Um7slisABOWPosz8h0XsxV18b68=", "serverKey" : "AwpUC8YlyvpGnncuxUaYzHKEkuw=" } }, "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }
{ "_id" : "svideo.vdb", "user" : "vdb", "db" : "svideo", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "C8xTDX0YZqOxybT/2lkvgw==", "storedKey" : "9Vty4qpDso2F5793zIOoscobefk=", "serverKey" : "q8d+EwCuQcCLeTTGIAHC3djnKmw=" } }, "roles" : [ { "role" : "dbOwner", "db" : "svideo" } ] }
2、添加管理用户(mongoDB 没有无敌用户root,只有能管理用户的用户 userAdminAnyDatabase),
db.createUser({
user:'admin',
pwd:'123456',
roles:[
{role:'userAdminAnyDatabase',db:'admin'},
{role:'dbAdminAnyDatabase',db:'admin'},
{role:'clusterMonitor',db:'admin'}
]
})
use mydb
db.createUser({
user:'vdb',
pwd:'123456',
roles:[{role:'dbOwner',db:'svideo'}]
})
角色:
userAdminAnyDatabase
dbOwner
readWrite
3、添加完管理用户后,关闭MongoDB,并使用权限方式再次开启MongoDB,这里注意不要使用kill直接去杀掉mongodb进程,(如果这样做了,请去data/db目录下删除mongo.lock文件),可以使用db.shutdownServer()关闭
> db.shutdownServer()
2017-09-15T21:23:01.223+0800 I NETWORK [thread1] trying reconnect to 127.0.0.1:27017 (127.0.0.1) failed
2017-09-15T21:23:01.223+0800 W NETWORK [thread1] Failed to connect to 127.0.0.1:27017, in(checking socket for error after poll), reason: Connection refused
2017-09-15T21:23:01.223+0800 I NETWORK [thread1] reconnect 127.0.0.1:27017 (127.0.0.1) failed failed
server should be down...
4、添加好用户后,就可以使用权限方式启动MongoDB
./mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/log/mongod.log --fork --auth
或者
./mongo --config=/u01/mongnodb/mongno.conf
在mongno.conf指定参数 auth = true
5、进入mongo shell,使用admin数据库并进行验证,如果不验证,是做不了任何操作的。
> use admin
> db.auth("admin","123456") #认证,返回1表示成功
6、验证之后还是做不了操作,因为admin只有用户管理权限,下面创建用户,用户都跟着库走,
> use mydb
> db.createUser({user: "app",pwd: "123456",roles: [{ role: "readWrite", db: "mydb" }]})
7、使用创建的用户root登录进行数据库操作:
mongo 127.0.0.1/mydb -uapp -p
mongo 127.0.0.1/mydb -uvdb -p
或者使用:
./mongo -u username -p password --port port --authenticationDatabase databaseName
./mongo databaseName -u username -p password --port port
然后就可以进行增删改查各种数据操作…
Mongodb的关闭:
前台运行:(不以守护进程方式启动)
如果没有使用--fork,直接可以前台退出终端关闭。通过这种方式,Mongodb将会自己做清理退出,把没有写好的数据写完成,并最终关闭数据文件。要注意的是这个过程会持续到所有操作都完成。
后台运行:(以守护进程方式启动 fork = true)
如果使用--fork在后台运行mongdb服务,那么就要通过向服务器发送shutdownServer()消息来关闭。
1、普通命令:
$ ./mongod
> use admin
> db.shutdownServer()
Mongodb启动帮助
mongod --help
如果启动时指定端口号了,不是默认的27017, 连接时也必须指定端口
mongo 127.0.0.1:27019
参考:
http://www.runoob.com/mongodb/mongodb-linux-install.html
MongoDB Authentication slow my TPS?
http://www.mongoing.com/archives/4623
数据
用户
数据库
方式
命令
存储
查询
管理
函数
文件
文档
语言
支持
服务
权限
目录
端口
进程
配置
功能
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全管理人员培训内容
无锡编程软件开发团队
我的世界怎么用后台查服务器ip
网络安全讲座最新
广电服务器多少钱
qq邮箱的发件收件服务器怎么填
cs专属服务器主机错误
贵阳电话软件开发具体地址
安装完数据库无法登录
湛江软件开发收费
东方微点杀毒软件开发商
数据库正在还原
北京嘉跃网络技术有限公司
软件开发经费预算项目
库房管理软件服务器
网络技术课程的特点
大专计算机网络技术工资
母婴网站一般需要什么数据库
石景山区软件开发经验丰富
coding 可以作为服务器吗
国外在线代理服务器网站
立信数据库实验
网络安全专项整治情况
励志软件开发岗位
单片机用什么数据库
如何查倒数10天数据库信息
成都银行软件开发岗待遇
软件开发 mfc过时了吗
数据库id自增是否可以设置
网络安全事件的应急预案演练