Mongodb 安装:
一. debian安装:
- 导入apt包管理系统需要使用的公钥。
在终端执行以下命令以从 https://www.mongodb.org/static/pgp/server-5.0.asc 导入 MongoDB GPG 公钥。
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
该操作应该会以OK响应。
但是,如果你收到错误提示未安装gnupg的错误,则需要:
安装gnupg及其所需的库:
sudo apt-get install gnupg
安装完成后,再次导入密钥
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add - - 为 MongoDB 创建/etc/apt/sources.list.d/mongodb-org-5.0.list文件
Debian 10:
echo “deb http://repo.mongodb.org/apt/debian buster/mongodb-org/5.0 main” | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list - 更新apt源
sudo apt-get update - 安装 MongoDB 包
sudo apt-get install -y mongodb-org - 运行MongoDB
默认情况下,MongoDB实例存储位置:
其数据文件位于 /var/lib/mongodb
其日志文件在 /var/log/mongodb
如果通过程序包管理器安装,则这些默认目录是在安装过程中创建的。
如果通过下载tarball手动安装,则可以使用mkdir -p或sudo mkdir -p 来创建目录
默认情况下,MongoDB使用mongodb用户帐户运行。如果更改运行MongoDB进程的用户,则还必须修改对/var/lib/mongodb和/var/log/mongodb 目录的权限,以使该用户可以访问这些目录。
要指定其他日志文件目录和数据文件目录,请在/etc/mongod.conf中编辑systemLog.path和storage.dbPath。确保运行MongoDB的用户有权访问这些目录。
启动流程:
按照以下步骤在运行 MongoDB社区版。 此处假设你使用的是官方的mongodb-org包,而不是 Debian 提供的非官方的mongodb包,并且使用的是默认设置。
初始化系统:
要运行和管理mongod进程,需要使用操作系统的内置init系统。 最新版本的 Linux 倾向于使用systemd( systemctl命令 ),而旧版本的 Linux 倾向于使用System V init(service命令)。
如果你不确定你的平台使用哪个初始化系统,请运行以下命令:
ps –no-headers -o comm 1
systemd(systemctl):
.启动MongoDB
sudo systemctl start mongod
如果在启动 mongod 时出现类似以下的错误:
Failed to start mongod.service: Unit mongod.service not found.
首先运行以下命令:
sudo systemctl daemon-reload
然后再次运行上面的启动命令。 - 验证MongoDB是否已成功启动
sudo systemctl status mongod
可以选择通过以下命令来确保 MongoDB 将在系统重新启动后启动:
sudo systemctl enable mongod - 终止MongoDB
sudo systemctl stop mongod - 重启MongoDB
sudo systemctl restart mongod
可以通过查看/var/log/mongodb/mongod.log文件中的输出来跟踪错误或重要消息的进程状态。 - 开始使用MongoDB
在与mongod相同的主机上启动mongosh会话。 在没有命令行选项时运行mongosh,会连接到localhost:27017上的mongod实例。
mongosh
有关使用 mongosh 进行连接的更多信息,例如连接到在不同主机和(或)端口上运行的 mongod 实例,请参阅mongosh文档。
二. Red Hat/CentOS:
sudo yum install libcurl openssl
Ubuntu 18.04 LTS (“Bionic”)/Debian 10 “Buster”:
sudo apt-get install libcurl4 openssl
Ubuntu 16.04 LTS (“Xenial”)/Debian 9 “Stretch”:
sudo apt-get install libcurl3 openssl
MongoDB 源码下载地址:https://www.mongodb.com/try/download/community
Server 是下载了rpm包直接 yum localinstall 安装;以后自动生成mongodbservice
/usr/lib/systemd/system/mongod.service
-rw-r–r– 1 root root 811 Nov 16 07:05 /usr/lib/systemd/system/mongod.service
我们下载了tgz包,Copy link 复制下载包url
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-7.0.4.tgz
tar xvf mongodb-linux-x86_64-rhel70-7.0.4.tgz
mv f mongodb-linux-x86_64-rhel70-7.0.4 mongodb && mv mongodb /usr/local/
vi /etc/profile
export PATH=$PATH:/usr/local/mongodb/bin
source /etc/profile
在需要的数据盘下面建文件夹,
Cd /data && mkdir -p mongo log
Touch log/mongodb.log
vi mongodb.conf
dbpath = /usr/local/mongodb/data \# mongodb数据文件存储路径(指定数据库目录)
logpath = /usr/local/mongodb/logs/mongodb.log \# mongodb的日志路径(指定日志文件目录)
logappend = true \# 日志使用追加代替覆盖
port = 27017 \# 端口
fork = true \# 以守护程序的方式启用,即在后台运行
auth = false \# 认证模式,需要设置账号和密码(下一步设置)
bind_ip = 127.0.0.1 \# 远程连接
启动:mongod -f mongodb.conf
mongod -f mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 26741
child process started successfully, parent exiting
添加系统服务:
[Unit]
Description=MongoDB Database Server
Documentation=https://docs.mongodb.org/manual
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/mongodb/bin/mongod --config /data/mongo/mongodb.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/mongodb/bin/mongod --shundown --config /data/mongo/mongodb.conf
ExecReload=/bin/kill -s HUP $MAINPID
Restart=always
PrivateTmp=true
LimitNOFILE=64000
LimitNPROC=64000
[Install]
WantedBy=multi-user.target
systemctl daemon-reload && systemctl start mongod
进入mongodb时候报错了,mongo:command not found;
/usr/local/mongodb/bin下面没有mongo;
https://www.mongodb.com/try/download/shell
需要到官网下一个mongosh,
wget https://downloads.mongodb.com/compass/mongodb-mongosh-2.1.1.x86_64.rpm
yum localinstall mongodb-mongosh-2.1.1.x86_64.rpm
三. 使用Mongodb
进入以后设置管理员账号,
test> use admin
switched to db admin
admin> db.createUser({user:”root”,pwd:”admin123”,roles:[{role:”root”,db:”admin”}]})
{ ok: 1 }
修改mongodb.conf auth = true 开启授权模式;
普通用户授权:
jary_test> db.createUser({user:"jary",pwd:"abc123",roles:[{role:"readWrite",db:"jary_test"}]})
{ ok: 1 }
jary_test> show users
[
{
_id: 'jary_test.jary',
userId: UUID('64e3c53b-652e-424c-abe7-1c981d603287'),
user: 'jary',
db: 'jary_test',
roles: [ { role: 'readWrite', db: 'jary_test' } ],
mechanisms: [ 'SCRAM-SHA-1', 'SCRAM-SHA-256' ]
}
]
查看用户:
#切换到admin数据库
use admin
#查看所有用户
db.system.users.find()
#删除用户
db.system.users.deleteOne({user:”jary2”})
admin> db.system.users.deleteOne({user:”jary2”})
{ acknowledged: true, deletedCount: 1 }
建立数据库:
admin> use jary_test
switched to db jary_test
jary_test> db
jary_test
插入数据:
jary_test> db.jary_test.insertOne({“name”:”zhr”,”age”:”31”,”online”:”true”})
{
acknowledged: true,
insertedId: ObjectId(‘657ab816940239e3d1eaeb07’)
}
jary_test> show dbs
admin 148.00 KiB
config 60.00 KiB
jary_test 8.00 KiB
local 72.00 KiB
use jary_test2
switched to db jary_test2
jary_test2> show dbs
admin 180.00 KiB
config 108.00 KiB
jary_test 40.00 KiB
local 72.00 KiB
刚创建的库不在数据库列表里面,需要插入数据。
jary_test2> db.jary_test2.insertOne({“name”:”zruo”,”score”:”98”})
{
acknowledged: true,
insertedId: ObjectId(‘657abb6c940239e3d1eaeb08’)
}
jary_test2> show dbs
admin 180.00 KiB
config 108.00 KiB
jary_test 40.00 KiB
jary_test2 40.00 KiB
local 72.00 KiB
删除数据库:
jary_test2> use jary_test2
already on db jary_test2
jary_test2> db.dropDatabase()
{ ok: 1, dropped: ‘jary_test2’ }
jary_test2> show dbs
admin 180.00 KiB
config 108.00 KiB
jary_test 40.00 KiB
local 72.00 KiB