赞
踩
MongoDB安装很简单,无需下载源文件,可以直接用apt-get命令进行安装。 打开终端,输入以下命令
sudo apt-get install mongodb
这时装好以后应该会自动运行mongod程序,通过命令查看进程是否已经启动
pgrep mongo -l
命令窗口结果
- root@iZm5eetszs07500os8erolZ:~# pgrep mongo -l
- 32216 mongod
- root@iZm5eetszs07500os8erolZ:~#
关闭MongoDB
sudo service mongodb stop
启动MongoDB
sudo service mongodb start
检查服务状态
sudo systemctl status mongodb
命令窗口结果
其它命令
- // 状态查询
- sudo systemctl status mongodb
-
- //停用
- sudo systemctl stop mongodb
-
- //启动
- sudo systemctl start mongodb
-
- //重启
- sudo systemctl restart mongodb
修改 MongoDB 是否自动随系统启动(默认:启用)
- sudo systemctl disable mongodb
-
- sudo systemctl enable mongodb
注意:极不建议使用kill强制杀死进程,这样数据会存在损坏
如果你从 Ubuntu 仓库安装 MongoDB 并想要卸载它(可能要使用官方支持的方式安装),可以输入:
- sudo systemctl stop mongodb
-
- sudo apt purge mongodb
-
- sudo apt autoremove
默认情况下,包管理器将创建 /var/lib/mongodb
和 /var/log/mongodb
,配置文件目录为/etc/mongodb.conf
MongoDB中,每个数据库的实例都可拥有多个用户,安全检查开启后,只要通过身份验证的用户才能够进行数据的读写操作。admin(管理员)和local(本地)是两个特殊的数据库,它们当中的用户可对任何数据库进行操作。这两个数据库中的用户可被看作是超级用户。经认证后,管理员用户可对任何数据库进行读写,同时能执行某些只有管理员才能执行的命令,如listDatabases和shutDown。
在默认情况下,mongod是监听在127.0.0.1之上的,任何客户端都可以直接连接27017,且没有认证。这样做的好处是,用户可以即时上手,不用担心被一堆配置弄的心烦意乱。然而坏处也是显而易见,如果直接在公网服务器上如此搭建MongoDB,那么所有人都可以直接访问并修改数据库数据了。
MongoDB默认是没有设置鉴权的,业界大部分使用MongoDB的项目也没有设置访问权限。这就意味着只要知道MongoDB服务器的端口,任何能访问到这台服务器的人都可以查询和操作MongoDB数据库的内容。在一些项目当中,这种使用方式会被看成是一种安全漏洞。
其实MongoDB本身有非常详细的安全配置准则,显然开发者也是想到了,然而他是将安全的任务推给用户去解决,这本身的策略就是偏向易用性的,对于安全性,则得靠边站了。
注:每个数据库都有自己的用户,创建用户的命令是db.createUser(),当你创建一个用户时,该用户就属于你当前所在的数据库。
MongoDB有一个比较奇怪的设置是,即便是一个admin用户,授权也必须在admin数据库下进行,而不能在其他数据库下进行。而授权之后admin用户就可以在任何数据库下进行任何操作了。当然数据库级别的用户在他自己的数据库下授权之后是不能到其他数据库进行操作的
标准 URI 连接语法:
- mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
-
- mongodb:// 这是固定的格式,必须要指定。
- username:password@ 可选项,如果设置,在连接数据库服务器之后,驱动都会尝试登陆这个数据库
- host1 必须的指定至少一个host, host1 是这个URI唯一要填写的。它指定了要连接服务器的地址。如果要连接复制集,请指定多个主机地址。
- portX 可选的指定端口,如果不填,默认为27017
- /database 如果指定username:password@,连接并验证登陆指定数据库。若不指定,默认打开admin数据库。
- ?options 是连接选项。如果不使用/database,则前面需要加上/。所有连接选项都是键值对name=value,键值对之间通过&或;(分号)隔开
-
- root@iZm5eetszs07500os8erolZ:~# mongo mongodb://127.0.0.1:27017
- MongoDB shell version v3.6.3
- connecting to: mongodb://127.0.0.1:27017
- MongoDB server version: 3.6.3
- Server has startup warnings:
- 2021-07-26T16:03:25.186+0800 I STORAGE [initandlisten]
- 2021-07-26T16:03:25.186+0800 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
- 2021-07-26T16:03:25.186+0800 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem
- 2021-07-26T16:03:26.300+0800 I CONTROL [initandlisten]
- 2021-07-26T16:03:26.300+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
- 2021-07-26T16:03:26.300+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
- 2021-07-26T16:03:26.300+0800 I CONTROL [initandlisten]
- > show databases;
- admin 0.000GB
- config 0.000GB
- local 0.000GB
- >
使用shell的方式连接:
- root@iZm5eetszs07500os8erolZ:~# mongo
- MongoDB shell version v3.6.3
- connecting to: mongodb://127.0.0.1:27017
- MongoDB server version: 3.6.3
- Server has startup warnings:
- 2021-07-26T16:03:25.186+0800 I STORAGE [initandlisten]
- 2021-07-26T16:03:25.186+0800 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
- 2021-07-26T16:03:25.186+0800 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem
- 2021-07-26T16:03:26.300+0800 I CONTROL [initandlisten]
- 2021-07-26T16:03:26.300+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
- 2021-07-26T16:03:26.300+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
- 2021-07-26T16:03:26.300+0800 I CONTROL [initandlisten]
- > show databases;
- admin 0.000GB
- config 0.000GB
- local 0.000GB
- > use admin
- switched to db admin
- >
-
命令说明
- //进入数据库
- mongo
-
- //显示数据库
- show databases;
-
- //使用数据库
- use admin
-
首先保证你已经以用户管理员的身份登录admin数据库。然后用use命令切换到目标数据库,同样用db.createUser() 命令来创建用户,其中角色名为“readWrite”,普通的数据库用户角色有两种,read和readWrite。顾名思义,前者只能读取数据不能修改,后者可以读取和修改。
- root@iZm5eetszs07500os8erolZ:~# mongo
- MongoDB shell version v3.6.3
- connecting to: mongodb://127.0.0.1:27017
- MongoDB server version: 3.6.3
- Server has startup warnings:
- 2021-07-26T16:03:25.186+0800 I STORAGE [initandlisten]
- 2021-07-26T16:03:25.186+0800 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
- 2021-07-26T16:03:25.186+0800 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem
- 2021-07-26T16:03:26.300+0800 I CONTROL [initandlisten]
- 2021-07-26T16:03:26.300+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
- 2021-07-26T16:03:26.300+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
- 2021-07-26T16:03:26.300+0800 I CONTROL [initandlisten]
- > use admin
- switched to db admin
- > db.createUser({user:"root",pwd:"root123abc",roles:["userAdminAnyDatabase"]})
- Successfully added user: { "user" : "root", "roles" : [ "userAdminAnyDatabase" ] }
- > use admin
- switched to db admin
- > db.auth("root","root123abc")
- 1
- > show users;
- {
- "_id" : "admin.root",
- "user" : "root",
- "db" : "admin",
- "roles" : [
- {
- "role" : "userAdminAnyDatabase",
- "db" : "admin"
- }
- ]
- }
- >
命令说明
- //创建root用户
- db.createUser({user:"root",pwd:"root123abc",roles:["userAdminAnyDatabase"]})
-
- //root登录 db.auth()方法返回1表示登录成功。
- db.auth("root","root123abc")
-
- //查看用户
- show users;
>db.system.users.remove({"user" : "test_user"}); 删除一个test_user用户
- root@iZm5eetszs07500os8erolZ:~# mongo
- MongoDB shell version v3.6.3
- connecting to: mongodb://127.0.0.1:27017
- MongoDB server version: 3.6.3
- Server has startup warnings:
- 2021-07-26T17:22:22.563+0800 I STORAGE [initandlisten]
- 2021-07-26T17:22:22.563+0800 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
- 2021-07-26T17:22:22.563+0800 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem
- 2021-07-26T17:22:23.721+0800 I CONTROL [initandlisten]
- 2021-07-26T17:22:23.721+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
- 2021-07-26T17:22:23.721+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
- 2021-07-26T17:22:23.721+0800 I CONTROL [initandlisten]
- > use test #创建一个test数据库
- switched to db test
- > show dbs; #列出所有数据库
- admin 0.000GB
- config 0.000GB
- local 0.000GB
-
- # 但是并没有看到刚才我们创建的test数据库,那是因为test数据库是空的,我们插入一条数据
-
- > db.test.insert({"name":"alanchen"})
- WriteResult({ "nInserted" : 1 })
- > db.test.find({"name":"alanchen"}) #查询数据
- { "_id" : ObjectId("60fe80e2098d05fbdf907486"), "name" : "alanchen" }
- > db.test.findOne() #查询一条数据
- { "_id" : ObjectId("60fe80e2098d05fbdf907486"), "name" : "alanchen" }
-
- > show dbs; #test 数据库就显示了
- admin 0.000GB
- config 0.000GB
- local 0.000GB
- test 0.000GB
-
- > db.dropDatabase(); # 删除数据库
- { "dropped" : "test", "ok" : 1 }
-
- > show dbs; # test数据库不显示了
- admin 0.000GB
- config 0.000GB
- local 0.000GB
- >
存储引擎(Storage Engine)是MongoDB的核心组件,负责管理数据如何存储在硬盘(Disk)和内存(Memory)上。从MongoDB 3.2 版本开始,MongoDB 支持多数据存储引擎(Storage Engine),MongoDB支持的存储引擎有:WiredTiger,MMAPv1和In-Memory。
从MongoDB 3.2版本开始,WiredTiger成为MongDB默认的Storage Engine,用于将数据持久化存储到硬盘文件中,WiredTiger提供文档级别(Document-Level)的并发控制,检查点(CheckPoint),数据压缩和本地数据加密( Native Encryption)等功能。
MongoDB不仅能将数据持久化存储到硬盘文件中,而且还能将数据只保存到内存中;In-Memory存储引擎用于将数据只存储在内存中,只将少量的元数据和诊断日志(Diagnostic)存储到硬盘文件中,由于不需要Disk的IO操作,就能获取索取的数据,In-Memory存储引擎大幅度降低了数据查询的延迟(Latency)。
查看MongoDB的默认存储引擎:
echo "db.serverStatus()"| mongo|grep wiredTiger
命令窗口结果
- root@iZm5eetszs07500os8erolZ:~# echo "db.serverStatus()"| mongo|grep wiredTiger
- "name" : "wiredTiger",
- "wiredTiger" : {
- root@iZm5eetszs07500os8erolZ:~#
WiredTiger和MMAPv1都用于持久化存储数据,相对而言,WiredTiger比MMAPv1更新,功能更强大。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。