资讯专栏INFORMATION COLUMN

mongoDB安装与操作

zorpan / 650人阅读

摘要:一下安装数据库进入官网,选择相应的版本下载,安装时默认勾选安装服务和修改一些数据库配置,如已有数据库连接工具,可取消默认勾选的安装。

一、Win下安装数据库

进入mongo官网,选择相应的msi版本下载,安装时默认勾选安装MongoD服务和修改一些数据库配置,如已有数据库连接工具Robo 3T,可取消默认勾选的compass安装。

若启动服务报mp错误,可修改binmongod.cfg,注释最后一行mp

安装后如果需要修改配置/服务或手动运行,可以参考如下:

1、命令行运行
可以通过命令行运行,也可以通过指定配置运行,以安装在D:MongoDB为例
# 单行配置
> D:MongoDBinmongod.exe --dbpath D:MongoDBdata --logappend

# 指定配置文件
> D:MongoDBinmongod.exe --config "D:MongoDBinmongod.cfg"
2、服务方式运行
通过安装和运行服务,可以让mongoDB以后台静默的方式运行。

安装/移除服务:

# 添加到windows服务
> D:MongoDBinmongod.exe --config "D:MongoDBinmongod.cfg" --install

# 移除服务(以管理员身份运行cmd)
> D:MongoDBinmongod.exe --remove

启动/关闭服务:

> net start MongoDB
> net stop MongoDB
二、Linux安装数据库
如果必要可先更新yum包管理,下面以CentOS系统为例:
$ yum -y update
1、安装Mongodb
查看当前系统版本
$ cat /etc/redhat-release
打开 https://repo.mongodb.org/yum/... ,选择适合自己系统的mongo版本,然后编辑Mongodb安装源,下面以3.6为例:
$ sudo vi /etc/yum.repos.d/mongodb-org-3.6.repo
编辑内容(根据自己的mongo版本替换下面的3.6字样):
[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
安装:
$ yum install mongodb-org
2、修改Mongo配置
mongo配置文件路径:/etc/mongod.conf,但如果用mongod命令直接运行(非service运行),此时若不用-f指定配置文件,mongo会使用内在配置,dbpath也默认存放在/data/db下
$ vi /etc/mongod.conf

#------------------------------------------------------------------------

# 可修改数据库存放位置
storage:
  dbPath: /var/lib/mongodb

# 若要支持远程连接,需将默认的127.0.0.1改为:
net:
  bindIp: 0.0.0.0

# 若需数据库权限认证,开启下面配置:
security:
    authorization: enabled

若远程连接工具Robo 3T还是不能连接,需在防火墙增加端口:

$ sudo /sbin/iptables -I INPUT -p tcp --dport 27017 -j ACCEPT
三、Linux运行数据库
1、启动
$ service mongod start  # 自动使用配置/etc/mongod.conf

# 或手动指定配置文件启动:
$ sudo mongod -f /etc/mongod.conf --fork # --fork后台运行

# 若以权限认证运行
$ sudo mongod -f /etc/mongod.conf --auth --fork
若启动出现timeout错误时,可查看service里的pid与config里的pid是否相同,不一致则修改:
$ sudo vi /usr/lib/systemd/system/mongod.service # 修改pid
$ systemctl daemon-reload # 重新加载service服务
$ service mongod start
2、重启
$ service mongod restart
3、关闭
$ service mongod stop

或手动关闭

$ sudo mongod -f /etc/mongod.conf --shutdown
4、随系统启动
默认安装后即随机启动,无须设置
$ chkconfig mongod on
四、操作数据库
1、数据管理

1.) 数据库操作

# 进入mongo
$ mongo

# 显示当前数据库,默认定位test数据库
> db;

# 显示所有数据库
> show dbs;

# 切换/创建数据库
> use xxx;

# 删除数据库
> db.dropDatabase();

# 修复数据库
> db.repairDatabase();

# 查看当前db的链接机器地址
> db.getMongo(); 

# 退出mongo
> exit;

2.) 集合(表)操作

# 显示所有集合名
> db.getCollectionNames();

# 创建集合
> db.createCollection("users", {size: 1024, max: 1000}); # 最大1M,1000条

# 删除集合
> db.users.drop();

3.) 文档(记录)操作

3.2版本之后,对CRUD操作分别新增了单条和批量指令
# 查询记录
-------------------------------------------------------------
> db.users.findOne();  # 查询集合里第一条
> db.users.find();  # 查询集合里全部

# 根据条件查询
> db.users.findOne({age: 8});
> db.users.find({age: 8}); 

# 新增记录
-------------------------------------------------------------
> db.users.insertOne({name: "wang", age: 8});  # 主键已存在会报错
> db.users.insertMany([{},{}]);  # 新增多条
> db.users.save({name: "wang", age: 8});  # 主键已存在会替换

# 修改记录
-------------------------------------------------------------
> db.users.updateOne({name: "wang"}, {$set: {sex: "male"}}); 
> db.users.updateMany({name: "wang"}, {$set: {sex: "male"}});
# 通用写法(后面两个参数:第一个表示找不到则新建一条,第二个表示更新多条)
> db.users.update({name: "wang"}, {$set: {sex: "male"}}, false, true);

# 删除记录
-------------------------------------------------------------
> db.users.deleteOne({age: 8}); 
> db.users.deleteMany({age: 8}); 
# 通用写法
> db.users.remove({age: 8});  # 默认多条
> db.users.remove({age: 8}, true);  # 可设单条
2、用户管理

1.) 用户类型

对于web应用来说,最常用的用户类型有:

用户类型 角色 管理用户 读写数据 身份授权库
数据库用户 read/readWrite 指定库 指定库/admin
所有数据库读写权限 readWriteAnyDatabase 任意库 admin
用户管理员 userAdmin 指定库 指定库/admin
所有数据库管理员 userAdminAnyDatabase 任意库 admin
超级账号 root 任意库 任意库 admin

2.) 常用用户指令

# 显示所有用户
> show users;

# 新建用户
> db.createUser({user:"用户名",pwd:"密码",roles:[{role:"角色",db:"库"}]});

# 若当前数据库与目标库相同,可简写:
> db.createUser({user:"用户名",pwd:"密码",roles:["角色"]});

# 追加用户权限
> db.grantRolesToUser("用户名",[{role:"角色",db:"库"}]);

# 修改用户权限
> db.updateUser("用户名",{roles:["角色1","角色2"]});

# 更新密码
> db.changeUserPassword("用户名","密码");
# 或
> db.updateUser("用户名",{pwd:"密码"});

# 删除用户
> db.dropUser("用户名");

3.) 管理用户创建

root、*AnyDatabase角色用户、cluster集群等用户只能在admin库下创建
> use admin;

# 超级管理员
> db.createUser({user:"root",pwd:"密码",roles:["root"]});

# user管理员账号
> db.createUser({user:"用户名",pwd:"密码",roles:["userAdminAnyDatabase"]});

# 任意库读写账号
> db.createUser({user:"用户名",pwd:"密码",roles:["readWriteAnyDatabase"]};

# 普通读写用户(可以在admin库下创建,但认证时也需在admin库)
> db.createUser({user:"用户名",pwd:"密码",roles:[{role:"readWrite",db:"业务库"}]});

4.) 普通用户创建

mongoDB的权限是跟随库的,用户在哪个库下创建的,则需在哪个库进行auth认证,如果认证库和读写目标库一致,则连接时authSource参数可省略(见第四节:连接数据库)
> use xxx;
> db.createUser({user:"用户名",pwd:"密码",roles:["readWrite"]);
如果提示SCRAM-SHA-256 requires undigested passwords错误,需要加mechanisms,如下:
> db.createUser({user:"用户名",pwd:"密码",roles:["readWrite"],mechanisms: ["SCRAM-SHA-1"]});
五、连接数据库
1、shell方式连接:

1.)普通登录

如果mongoDB未开启认证模式,所有用户的权限与root一样,任意操作。
$ mongo

# 自定义host和端口
$ mongo --host 主机 --port 端口

2.)认证登录

mongoDB的权限是跟随库的,普通用户在哪个库新建授权,就需要在哪个库进行auth验证
$ mongo --host 主机 --port 端口
> use 认证数据库;
> db.auth("用户名", "密码");
也可以登录时一并授权认证:
$ mongo --host 主机 --port 端口 -u "用户名" -p "密码" --authenticationDatabase "身份认证所用库"
root和*AnyDatabase角色的权限只能在admin数据库里认证,如:
$ mongo --host 主机 --port 端口 -u root -p 123456 --authenticationDatabase admin
2、URI方式连接:

1.)未认证数据库

mongo://主机:端口/数据库名

2.)认证数据库

a.)普通数据用户

若当前用户认证的数据库与要操作的数据库相同,连接方式如下:
mongo://用户名:密码@主机:端口/数据库名
若不同,则需添加authSource,例如:在admin库里认证了,角色db却是xxx
mongo://用户名:密码@主机:端口/xxx?authSource=admin

b.)root和所有数据库用户

若连接用户是root、*AnyDatabase角色、cluster集群的认证库都是admin
mongo://用户名:密码@主机:端口/数据库名?authSource=admin

c.)认证机制

mongoDB支持多种认证机制, 常用的有"MONGODB-CR" 和 "SCRAM-SHA-1" 两种,官方推荐 "SCRAM-SHA-1",此时不需要带在URI里,但如果是"MONGODB-CR"类型需加添加在URI上。
mongo://用户名:密码@主机:端口/数据库?authMechanism=认证机制&authSource=身份认证所用库
六、备份/恢复数据库
1、备份数据库:
也适用于copy远程数据库到本地
$ mongodump --host 主机 --port 端口 --username 用户 --password "密码" --authenticationDatabase "授权库" --db 目标数据库 --out 存放目录
2、恢复数据库:
若本地数据库以非认证模式运行,恢复到本地可简单的如下:
$ mongorestore 存放目录
恢复远程认证数据库:
$ mongorestore --host 主机 --port 端口 --username 用户 --password "密码" --authenticationDatabase "授权库" 存放目录

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/19526.html

相关文章

  • MongoDB安装启动(Mac 版)

    摘要:本次讲述安装的当然是免费的社区版。两种安装方法手动安装,需要下载安装包解压编译比较繁琐使用系统的安装,是系统上的包管理工具,类似的。如文章出现有错误,麻烦指出或有相关知识点讨论也十分欢迎 Mac上装MongoDB的官网教程:https://docs.mongodb.com/manu...,英文不错的可以直接看,教程也很清晰。 两种版本 MongoDB有两种版本: 1.(Enterpri...

    keithyau 评论0 收藏0
  • Node.js学习之路01——不同操作系统下Node.js环境搭建

    摘要:基本介绍这是一个基本的环境搭建不同的操作系统可以选择不同的安装方式如果不需要太多的安装步骤就直接在官网下载最新版安装包进行安装即可环境配置必须安装的软件更改源与更新系统首先备份下载的源配置文件运行生成缓存更新系统安装使用安装命 基本介绍 这是一个基本的Node.js环境搭建,不同的操作系统可以选择不同的安装方式 如果不需要太多的安装步骤,就直接在Node.js官网下载最新版安装包进行...

    meteor199 评论0 收藏0
  • 手把手教你 MongoDB安装详细使用(一)

    摘要:如删除集合下全部文档删除等于搜云库的全部文档搜云库关注公众号,搜云库,专注于开发技术的研究与知识分享删除等于的一个文档查询文档查询文档使用方法。 一、什么是MongoDB ? MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下,添加更多的节点,可以保证服务器性能。 MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。 Mo...

    KnewOne 评论0 收藏0

发表评论

0条评论

zorpan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<