2.6 MongoDB的服务器配置
安装过程
添加 MongoDB 的源:
mongodb-org
这个包默认不存在 CentOS 的源里,所以要先添加到我们服务器中:
vi /etc/yum.repos.d/mongodb-org.repo
然后访问 Install on Red Hat 找到最新的 MongoDB 稳定版本并添加到上面打开的文档中,类似这样:
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
[mongodb-org-3.4]
name=MongoDB 3.4 Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=0
enabled=1
编辑并保存文件,查看服务器源列表中是否已添加成功(留意 mongodb-org-版本):
$ yum repolist
# 输出一般如下
. . .
repo id repo name
base/7/x86_64 CentOS-7 - Base
extras/7/x86_64 CentOS-7 - Extras
mongodb-org-3.2/7/x86_64 MongoDB Repository
updates/7/x86_64 CentOS-7 - Updates
. . .
安装 MongoDB:
yum install mongodb-org
启动 MongoDB:
$ sudo systemctl start mongod
如有需要重新解析改动后的 /etc/mongod.conf 配置文件,可以执行:
$ sudo systemctl reload mongod
因为 systemctl 并不返回启动结果,所以可以通过以下命令查看是否启动:
$ sudo tail /var/log/mongodb/mongod.log
查找是否包含该日志,若出现则表示服务已启动,可以通过 mongo
来开启命令:
. . .
[initandlisten] waiting for connections on port 27017
开机自启动
首先查看是否已启用:
$ systemctl is-enabled mongod; echo $?
# 查看输出是否包含 enabled 字样
. . .
enabled
0
若无,可以手动启动:
$ sudo systemctl enable mongod
导入 example 数据
mongorestore -h 127.0.0.1:27017 -d doracms2 --drop #centos上要引入的数据的目录
创建管理员 和操作员
mongo ...
...
use admin
# 创建管理员
db.createUser({user: "admin",pwd: "admin",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]})
退出 然后使用管理员账号重新登录 创建操作员
# 创建数据操作员
db.createUser({user: "leiyuyang",pwd: "leiyuyang",roles: [ { role: "readWrite", db: "doracms2" } ]})
修改配置文件 mongdb.conf
添加在
security:
auth:true
如果是在3.x 版本以上添加
security:
authorization: "enabled"
查看数据:
$ mongo
$ db.restaurants.find()
删除数据库:
$ db.restaurants.drop()
数据库权限操作
$ mongo --port 27017
$ use admin
$ db.auth("root", "xxxxxx")
$ show dbs # 查看数据库
$ use <db name> # 选择数据库
$ show collections # 查看 collections
$ db.collectionName.find() # 查看 documents
$ use <db name> # 创建数据库
$ db.test.insert({"name":"tutorials point"}) # 随便插入点数据(才能出现)
添加数据库用户
$ mongo --port 27017
$ use admin
$ db.createUser(
{
user: "root",
pwd: "xxxxxx",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})
# 现在我们为 MongoDB 的 admin 数据库添加一个用户 root,MongoDB 可以为每个数据库
# 都建立权限认证,也就是你可以指定某个用户可以登录到哪个数据库。上面的代码,我们为
# admin 数据库添加了一个 root 用户,在 MongoDB 中 admin 数据库是一个特别的数据库,
# 这个数据库的用户,可以访问 Mongodb 中的所有数据库。
用户登录
# 方式一
$ mongo --port 27017 -u "root" -p "xxxxxx" --authenticationDatabase "admin"
# 方式二
$ mongo --port 27017
$ use admin
$ db.auth("root", "xxxxxx")
// 输出 1 表示验证成功,并且不会报错了
账户相关操作:
# 查询某个数据库下用户(每个数据库的用户账号都是以文档形式存储在 system.users 集合里面的)
$ db.system.users.find()
# 删除某个数据库下的所有用户
$ db.system.users.remove()
# 删除指定用户
$ db.system.users.remove({'user':'用户名'})
# 修改账户密码
db.changeUserPassword("username", "newpassword")
数据库数据操作
mongoexport导出表,或者表中部分字段(一般可以简写)
$ mongoexport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --csv -q 条件 -f 字段 -o newdbexport.json/dat/csv
-h:数据库宿主机的IP
-u:数据库用户名
-p:数据库密码
-d:数据库名字
-c:集合的名字
-f:导出的列名
-q:导出数据的过滤条件
-o:导出文件的目录及文件名(/xx/xx/xx.json)
--type:json 或 csv(默认是 json)
比如导出整张表:
$ mongoexport -d test -c users -o allusers.dat
比如导出部分字段:
$ mongoexport -d test -c users --csv -f uid,name,sex -o test/users.csv
比如根据条件敢出数据:
$ mongoexport -d test -c users -q '{uid:{$gt:1}}' -o test/users.json
导入表
# mongoimport 导入表,或者表中部分字段
$ mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --upsert --drop 文件名
比如还原导出的表数据(--upsert 插入或者更新现有数据)
$ mongoimport -d test -c users --upsert test/users.dat
比如部分字段的表数据导入(--upsertFields根--upsert一样)
$ mongoimport -d test -c users --upsertFields uid,name,sex test/users.dat
比如还原csv文件
$ mongoimport -d test -c users --type csv --headerline --file test/users.csv
备份数据库
# mongodump 备份数据库(如果想导出所有数据库,可以去掉-d)
$ mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径
比如:
$ mongodump -h 127.0.0.1 -p 30216 -d test -uxxxx -pxxxxx -o home/mongodb/
还原数据库
# mongorestore 还原数据库
$ mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 --drop 文件存在路径
比如:
$ mongorestore -d test /home/mongodb/test
Last updated
Was this helpful?