MongoDB
安装 MongoDB
MongoDB 尚未包含在官方仓库中。您需要从 server:database 仓库安装它。以下链接提供了一键安装(适用于桌面环境)和命令行方式(适用于服务器环境)。
https://software.opensuse.net.cn//download.html?project=server%3Adatabase&package=mongodb
较新的 MongoDB 版本仅在 x86_64 系统上可用。
创建 Btrfs 子卷 (推荐)
/var/lib/mongodb 是 MongoDB 默认存储数据的位置。但是,它不是 Btrfs 子卷,snapper 会拍摄数据更改的快照。如果您的根文件系统是 Btrfs 并且启用了快照,MongoDB 数据的更改将导致大型 Btrfs 快照。
如果它仅用于本地测试,人们通常不会回滚数据库中的数据。因此,这只是浪费了存储空间。您可以创建一个 Btrfs 子卷并禁用其上的快照。在服务器上,通常也建议为 /var/lib/mongodb 创建子卷,这可以使您创建与操作系统快照独立的快照。
创建子卷的步骤很简单,但您必须非常小心!您需要以 root 用户身份运行它,并确保您的 MongoDB 服务器已停止!
# Stop MongoDB server if it is running
systemctl stop mongodb
# Create a new subvolume
btrfs subvolume create /var/lib/mongodb-temp
# This new subvolume is owned by root.
# We need to change owner to mongodb user and mongodb group
chown mongodb:mongodb /var/lib/mongodb-temp
# Move all data into new subvolume
mv /var/lib/mongodb/* /var/lib/mongodb-temp
# Remove old directory
rmdir /var/lib/mongodb
# Rename new subvolume
mv /var/lib/mongodb-temp /var/lib/mongodb
# Restart MongoDB (optional)
systemctl start mongodb
首次运行
openSUSE 的配置
openSUSE 的 mongodb 包包含一个默认配置 /etc/mongodb.conf 和一个 systemd 服务文件。此配置的优点是
1. 将数据保存在典型的 Linux 目录 /var/lib/mongodb 中,而不是 /data/db。 2. 启用一些常见的安全和便利设置。 3. 使用 systemd 的强大功能。
如果您想运行此配置,只需使用 systemd 命令
sudo systemctl start mongodb
要在系统启动时运行 mongodb
sudo systemctl enable mongodb
您自己的配置
如果您想要更多自由度,例如,您想使用不同的配置运行多个 MongoDB 服务器,可以使用 mongod 命令。
mongod --dbpath /database/mongodb1 --port 7000
mongod --dbpath /database/mongodb2 --port 8000
mongod --dbpath /database/mongodb3 --port 9000
请阅读 MongoDB 参考 以获取详细信息。
MongoDB Shell
MongoDB Shell (包: mongodb-shell) 是一个命令行客户端。当您的 MongoDB 服务器已经运行时,您可以使用 mongo 命令登录 MongoDB
gekko@opensuse:~> mongo
MongoDB shell version v3.4.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.3
>
创建 admin 用户
当您安装 MongoDB 时,没有定义用户。您可以无需提供用户名或密码即可登录。但是,如果您想创建数据库和管理用户,则必须创建一个管理员帐户。
use admin
db.createUser({
user: "root",
pwd: "password",
roles: [ "root" ]
})
exit
use admin表示您切换到admin数据库。db.createUser()允许您在当前数据库中创建一个用户。user:用户名,可以随意设置。pwd:密码。roles:用户的角色。“root” 角色赋予您管理 MongoDB 的所有权限。exit命令退出 mongo shell。
下次,您可以使用管理员用户登录
mongo --authenticationDatabase admin -u root -p
注意:您需要提供创建管理员用户的数据库名称 ("--authenticationDatabase admin")。否则,身份验证将失败。
创建带有用户的数据库
openSUSE 的 mongodb 配置强制应用程序在 MongoDB 中访问数据库时提供用户名和密码。
如果您有一个应用程序,并且想要为其创建一个数据库,请执行以下步骤
步骤 1:以管理员用户身份登录 mongo shell
mongo --authenticationDatabase admin -u root -p
步骤 2:创建数据库并添加具有必要权限的用户
use japaripark
db.createUser({
user: "serval",
pwd: "tanoshi",
roles: [ "readWrite", "dbAdmin" ]
})
步骤 3:在您的项目中填写数据库信息
这是一个 NodeJS 示例
var MongoClient = require('mongodb').MongoClient,
f = require('util').format,
assert = require('assert');
var user = encodeURIComponent('serval');
var password = encodeURIComponent('tanoshi');
var authMechanism = 'DEFAULT';
// Connection URL
var url = f('mongodb://%s:%s@localhost:27017/japaripark?authMechanism=%s',
user, password, authMechanism);
// Use connect method to connect to the Server
MongoClient.connect(url, function(err, db) {
assert.equal(null, err);
console.log("Connected correctly to server");
db.close();
});
通讯
团队成员
- -
- -
- -