OS:Ubuntu 22.04 LTS
cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.4 LTS"
Welcome to Alibaba Cloud Elastic Compute Service !
Table of Contents
1.在Linux上安装MongoDB,有有两种方式可以选择
1.1 deb安装包安装:类似于window下的下载exe文件,运行安装。
1.2 .tgz tarball:下载源代码,自己编译,自己安装,全程DIY。有网友就是用这种方式安装的,他这么做的原因是选前一种方式安装,他找不到把文件安装到系统中哪些地方去了。所以他自己建数据库和日志目录。
Install using .tgz Tarball on Ubuntu
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu-tarball/
选第一种方式的人一般比较懒。懒的人因为懒,所以会想个办法来解决现有的问题,如果问题被解决了,恰好又被领导认可,在公司里有可能就被总结为创新。创新天天喊,我认为创新就是这么来的。
选第二种方式的人,属于术业有专攻之人,日后定会成为程序员心目中的大神。
2.mongodb有很多版本,Ubuntu也有很多发行版本。
MongoDB 4.2 不支持 Ubuntu 14.04及以下的版本。也不支持WINDOWS SUBSYSTEM FOR LINUX (WSL)。所以安装之前,你的查一查你的Ubuntu是什么版本,需要选择哪个mongodb版本。
Supported Platforms
https://docs.mongodb.com/manual/installation/#mongodb-supported-platforms
3.安装步骤
环境:
Ubuntu releases:22.04 LTS (bionic)
MongoDB Version:MongoDB 7.0 Community Edition
安装方式:使用deb安装包安装
updated:202410
step 1:导入公钥
Ubuntu软件包管理工具(即apt)通过要求分销商使用GPG密钥对软件包进行签名来确保软件包的一致性和真实性。使用以下命令以导入MongoDB公共GPG密钥:
sudo apt-get install gnupg curl
输出
curl is already the newest version (7.81.0-1ubuntu1.17).
gnupg is already the newest version (2.2.27-3ubuntu2.1).
gnupg set to manually installed.
Import the MongoDB public GPG key
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg \
--dearmor
step 2:创建源列表文件MongoDB
创建/etc/apt/sources.list.d/mongodb-org-7.0.list
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
cat /etc/apt/sources.list.d/mongodb-org-7.0.list的内容如下:
deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse
come from:https://www.mongodb.com/docs/v7.0/tutorial/install-mongodb-on-ubuntu/
step 3:更新源
sudo apt-get update
sudo 表示以root用户权限执行,如果你已经在root用户下,当然可以直接用apt-get update了。
输出:
Get:11 https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0/multiverse amd64 Packages [51.7 kB]
Get:12 https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0/multiverse arm64 Packages [50.4 kB]
Reading package lists...
step 4:安装MongoDB 包
sudo apt-get install -y mongodb-org
mongodb-org是一个Metapackage(功能包集,把一些相近的功能模块、 软件包放到一起)。具体包含mongodb-org-server,mongodb-org-mongos,mongodb-org-shell,mongodb-org-tools四个,这四个都会安装在系统中。
Adding user `mongodb' to group `mongodb' ...
Adding user mongodb to group mongodb
Done.
Setting up mongodb-org-shell (7.0.14) ...
Setting up mongodb-database-tools (100.10.0) ...
Setting up mongodb-org-mongos (7.0.14) ...
Setting up mongodb-org-database-tools-extra (7.0.14) ...
Setting up mongodb-org-database (7.0.14) ...
Setting up mongodb-org-tools (7.0.14) ...
Setting up mongodb-org (7.0.14) ...
Processing triggers for man-db (2.10.2-1) ... ...
中间提示要占用270M磁盘,问你要继续吗?当然选Y(es).所以,你看到网上大多是这样写的:
sudo apt-get install y mongodb-org
sudo apt-get install y mongodb-org
那个参数y,就是直接跳过这一步的。
apt-get 安装指定版本的mongodb,如:3.2.9
sudo apt-get install -y mongodb-org=3.2.9 mongodb-org-server=3.2.9 mongodb-org-shell=3.2.9 mongodb-org-mongos=3.2.9 mongodb-org-tools=3.2.9
step 5:启动mongodb
sudo service mongod start
step 6 检查一下mongodb是否启动成功
方式1:看进程
ps aux | grep mongod
输出
mongodb 17887 0.3 2.5 1575060 102860 ? Ssl Oct08 0:04 /usr/bin/mongod --config /etc/mongod.conf
root 19095 0.0 0.0 14428 1048 pts/0 S+ 00:02 0:00 grep --color=auto mongod
从输出信息可以看出,几个关键信息:
数据库位置:/var/bin/mongod
配置文件名及位置:/ect/monogd.conf
执行的命令:/var/bin/mongod --config /ect/monogd.conf
very good。不同版本的mongodb安装到系统里,文件存放在哪里,不用记也不用查,用这种方法都知道了,用不着网上到处查了,查出来结果还不一样,是不是很省事?
方式2:看日志
vi/var/log/mongodb/mongod.log
2019-10-08T23:43:29.741+0800 I NETWORK [initandlisten] Listening on /tmp/mongodb-27017.sock
2019-10-08T23:43:29.742+0800 I NETWORK [initandlisten] Listening on 127.0.0.1
2019-10-08T23:43:29.742+0800 I NETWORK [initandlisten] waiting for connections on port 27017
方式三:看监听端口
sudo netstat -plntu
sudo service mongod start #启动
sudo service mongod stop #停止
sudo service mongod restart #重启
在命令行启动mongodb
/usr/bin/mongod --config /etc/mongod.conf
sudo systemctl enable mongod # 加入mongod服务
sudo systemctl start mongod # 开启mongod服务
sudo systemctl stop mongod # 停止mongod服务
MongoDB默认文件存储位置目录结构
在/var/lib/mongo目录,
MongoDB默认数据文件存放在/var/lib/momgo目录 。
默认日志文件存在/var/log/mongodb/mongod.log目录。
如需修改可以在/etc/mongod.conf配置文件中指定目录
vi /etc/mongod.conf
内容如下:
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# Where and how to store data.
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# network interfaces
net:
port: 27017
bindIp: 0.0.0.0
https://docs.mongodb.com/v4.2/reference/configuration-options/
4.允许外部访问
修改绑定的ip,打开mongod.conf
MongoDB configuration files use the YAML format。YAML does not support tab characters for indentation: use spaces instead.注意空格个数,否则无法启动。
防火墙,就可以通过外部工具连接了
5.安全
权限设置
默认情况下,mongodb的监听端口为27017,无认证,这样很不安全,很容易被勒索的。其中MongoDB默认是没有开启用户认证的,也就是说游客也拥有超级管理员的权限。所以,我们需要设置用户名密码和数据库的访问权限。
1.指定ip地址访问
2.设置用户名和密码
MongoDB的用户分为两种:
1.一种是admin用户,admin用户拥有最高的权限。MongoDB有一个比较奇怪的设置是,即便是一个admin用户,授权也必须在admin数据库下进行,而不能在其他数据库下进行。而授权之后admin用户就可以在任何数据库下进行任何操作了。当MongoDB的admin库里没有任何用户的时候,也就是说整个MongoDB没有一个MongoDB用户的时候,即便–auth权限需求打开了,用户还是可以通过localhost界面进入MongoDB进行用户设置,否则的话整个MongoDB就完全没法访问了。
2.特定数据库用户。特定数据库用户则只能访问特定的数据库。数据库级别的用户在他自己的数据库下授权之后是不能到其他数据库进行操作的
而当这个用户创建完成之后,之后的用户登录和操作就需要授权了,不是直接登录就能使用的了。
启动mongod服务,在sehll中输入命令:
1. 创建一个不受访问限制的超级用户
use admin
db.createUser({user:"root", pwd:"pass123", roles:[{role:"root", db:"admin"}]})
其他备用命令:
use admin
db.changeUserPassword("admin", "Waddews")
有两种方式进行用户身份的验证
第一种 (类似 MySql)
客户端连接时,指定用户名,密码,db名称
mongo --port 27017 -u "lyl" -p "123456" --authenticationDatabase "admin"
第二种客户端连接后,再进行验证
mongo --port 27017
use admin
db.auth("adminUser", "adminPass")
// 输出 1 表示验证成功
mongodb访问默认是用当前访问的库作为验证,若要验证通过可以通过两种方法。
1、在连接串上指定验证库,方法就是在连接串上加上authSource=admin,一般使用admin来做验证库
2、为当前的库添加对应的账户、密码和角色,以满足默认验证库为访问库的情况。
use stock
db.createUser({user:"stock", pwd:"***", roles:[{role:"dbOwner", db:"stock"}]})
mongo --eval 'db.runCommand({ connectionStatus: 1 })'
MongoDB shell version v4.2.23
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("583530a1-6758-4eff-84eb-2928d66b29dc") }
MongoDB server version: 4.2.23
{
"authInfo" : {
"authenticatedUsers" : [ ],
"authenticatedUserRoles" : [ ]
},
"ok" : 1
}
官网安装指南:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/
MongoDB Manual 7.0:https://www.mongodb.com/docs/v7.0/tutorial/install-mongodb-on-ubuntu/
MongoDB Manual 4.2 Configuration File Options:https://docs.mongodb.com/v4.2/reference/configuration-options/