MongoDB là một cơ sở dữ liệu NoSQL cung cấp hiệu suất cao, tính khả dụng cao và khả năng mở rộng tự động. Cơ sở dữ liệu NoSQL có nghĩa là, không giống như MySQL hoặc PostgreSQL, nó không hỗ trợ SQL (Ngôn ngữ truy vấn có cấu trúc) để truy xuất hoặc thao tác dữ liệu đã lưu trữ. MongoDB không lưu trữ dữ liệu trong các bảng, thay vào đó, nó lưu trữ dữ liệu trong cấu trúc "tài liệu" tương tự như JSON (trong MongoDB được gọi là BSON). MongoDB lần đầu tiên được giới thiệu vào năm 2009, cách đây sáu năm. Hiện được phát triển bởi công ty MongoDB MongoDB Inc.
Trong hướng dẫn này, tôi sẽ hướng dẫn bạn cài đặt và cấu hình MongoDB 3.2 (ổn định) trên máy chủ CentOS 7. Chúng tôi sẽ thêm và cấu hình người dùng quản trị cho MongoDB và cấu hình xác thực cho các dịch vụ MongoDB.
Chúng ta cần đến thư mục 'yum.repos.d' để thêm kho lưu trữ CentOS mới. Vào thư mục đó và tạo tệp kho lưu trữ mới 'mongodb-org-3.2.repo' bằng vim:
Dán cấu hình kho lưu trữ MongoDB được hiển thị bên dưới:
Lưu tệp và thoát khỏi trình chỉnh sửa.
Chạy lệnh bên dưới với tư cách là root để thực hiện:
Bạn sẽ thấy kết quả bên dưới. Kho lưu trữ MongoDB nằm trong danh sách.
Tiếp theo, cài đặt MongoDB bằng lệnh yum.
Khi quá trình cài đặt hoàn tất, hãy khởi động MongoDB bằng lệnh systemctl này:
Kiểm tra xem MongoDB có đang chạy không bằng cách kiểm tra xem cổng '27017' có mở không.
Và đảm bảo rằng dịch vụ mongodb đang hoạt động.
Bạn có thể sẽ thấy lỗi này về cấu hình ulimit trên máy chủ.
Ulimits hoặc User limits xác định lượng tài nguyên trên toàn hệ thống mà người dùng có thể sử dụng.
Để giải quyết vấn đề này, chúng ta cần tăng cấu hình ulimit của người dùng mongod.
Trên máy chủ CentOS 7, cơ sở dữ liệu MongoDB đang chạy dưới người dùng 'mongod'. Vào thư mục 'security' và chỉnh sửa tệp cấu hình 'limits.conf'.
Tôi sẽ tăng giới hạn của người dùng mongod lên '64000' - số lượng tiến trình hoặc nproc và số lượng tệp đang mở hoặc nofile lên 64000.
Dán cấu hình mới bên dưới vào cuối tệp:
Lưu tệp limits.conf.
Chạy lệnh sysctl bên dưới để áp dụng các giới hạn đã thay đổi cho hệ thống:
Sau đó, khởi động lại dịch vụ MongoDB và thử lại để truy cập shell mongo, lỗi đã biến mất.
Mở shell mongodb:
Tôi sẽ tạo người dùng quản trị mới có tên 'admin' với mật khẩu 'admin123'. Vui lòng sử dụng mật khẩu an toàn trên máy chủ của bạn. Sau đó, chúng ta sẽ cấu hình vai trò của người dùng là 'UserAdminAnyDatabase'.
Chuyển sang cơ sở dữ liệu 'admin'.
Nhập truy vấn MongoDB bên dưới để tạo người dùng quản trị viên mới:
Tiếp theo, hãy đảm bảo rằng người dùng đã được tạo bằng truy vấn MongoDB bên dưới.
Người dùng quản trị viên MongoDB đã được tạo.
Trên máy chủ CentOS 7 của chúng tôi, MongoDB đang chạy dưới systemd với một tập lệnh init trong Thư mục '/etc/init.d/'. Chúng ta sẽ chỉnh sửa tập lệnh đó để buộc dịch vụ mongodb chạy với tùy chọn '--auth'.
Đi tới thư mục '/etc/init.d/' và chỉnh sửa tệp "mongod":
Ở dòng 15, bạn sẽ tìm thấy biến "OPTION", tại đó chúng ta sẽ thêm tùy chọn "mongod".
Lưu tệp.
Tải lại dịch vụ systemd và khởi động lại MongoDB.
Tiếp theo, chúng ta phải kiểm tra cấu hình bằng cách đăng nhập vào shell mongo và chuyển sang cơ sở dữ liệu quản trị, sau đó thử xem người dùng quản trị.
Bạn sẽ thấy lỗi về việc thực thi lệnh trái phép trong quản trị cơ sở dữ liệu. Bây giờ chúng ta cần sử dụng lệnh 'db.auth()' để xác thực.
Bây giờ bạn có thể thấy người dùng với vai trò và đặc quyền của họ.
MongoDB 3.2 đã được cài đặt và cấu hình trên CentOS 7 Server.
Trong hướng dẫn này, tôi sẽ hướng dẫn bạn cài đặt và cấu hình MongoDB 3.2 (ổn định) trên máy chủ CentOS 7. Chúng tôi sẽ thêm và cấu hình người dùng quản trị cho MongoDB và cấu hình xác thực cho các dịch vụ MongoDB.
Điều kiện tiên quyết
- CentOS 7
- Quyền root
- Thêm kho lưu trữ MongoDB.
- Cài đặt MongoDB.
- Sửa một số lỗi MongoDB.
- Tạo người dùng quản trị.
- Bật xác thực và kiểm tra MongoDB.
Bước 1 - Thêm kho lưu trữ MongoDB vào CentOS
Kết nối với máy chủ CentOS 7 của bạn bằng tài khoản root ssh:
Mã:
ssh [emailprotected]
Mã:
cd /etc/yum.repos.d/
vim mongodb-org-3.2.repo
Mã:
[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc
Bước 2 - Cài đặt MongoDB
Chúng tôi đã thêm kho lưu trữ MongoDB, bây giờ hãy kiểm tra danh sách kho lưu trữ trên máy chủ để đảm bảo rằng kho lưu trữ MongoDB có sẵn trong danh sách.Chạy lệnh bên dưới với tư cách là root để thực hiện:
Mã:
yum repolist
Tiếp theo, cài đặt MongoDB bằng lệnh yum.
Mã:
yum -y install mongodb-org
Mã:
systemctl start mongod
Mã:
netstat -plntu
Mã:
systemctl status mongod
Bước 3 - Sửa lỗi MongoDB
MongoDB đã được cài đặt. Bây giờ chúng ta có thể truy cập shell mongodb bằng cách sử dụng lệnh bên dưới:
Mã:
mongo
Mã:
** CẢNH BÁO: soft rlimits quá thấp. rlimits được đặt thành 4096 quy trình, 64000 tệp. Số lượng quy trình phải ít nhất là 32000...
Ulimits hoặc User limits xác định lượng tài nguyên trên toàn hệ thống mà người dùng có thể sử dụng.
Để giải quyết vấn đề này, chúng ta cần tăng cấu hình ulimit của người dùng mongod.
Trên máy chủ CentOS 7, cơ sở dữ liệu MongoDB đang chạy dưới người dùng 'mongod'. Vào thư mục 'security' và chỉnh sửa tệp cấu hình 'limits.conf'.
Mã:
cd /etc/security/
vim limits.conf
Dán cấu hình mới bên dưới vào cuối tệp:
Mã:
mongod soft nproc 64000
mongod hard nproc 64000
mongod soft nofile 64000
mongod hard nofile 64000
Chạy lệnh sysctl bên dưới để áp dụng các giới hạn đã thay đổi cho hệ thống:
Mã:
sysctl -p
Mã:
systemctl restart mongod
mongo
Bước 4 - Tạo Người dùng Quản trị MongoDB
Trong bước này, chúng ta sẽ tạo một người dùng mới "admin" cho MongoDB với vai trò 'UserAdminAnyDatabase' từ shell mongo.Mở shell mongodb:
Mã:
mongo
Chuyển sang cơ sở dữ liệu 'admin'.
Mã:
sử dụng admin
Mã:
db.createUser(
{
user: "admin",
pwd: "admin123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
Mã:
show users
Người dùng quản trị viên MongoDB đã được tạo.
Bước 5 - Bật Xác thực Người dùng trong MongoDB
Trong bước này, chúng tôi sẽ bật xác thực cho người dùng để ngăn người dùng khác không có đủ đặc quyền có thể xem dữ liệu trên cơ sở dữ liệu.Trên máy chủ CentOS 7 của chúng tôi, MongoDB đang chạy dưới systemd với một tập lệnh init trong Thư mục '/etc/init.d/'. Chúng ta sẽ chỉnh sửa tập lệnh đó để buộc dịch vụ mongodb chạy với tùy chọn '--auth'.
Đi tới thư mục '/etc/init.d/' và chỉnh sửa tệp "mongod":
Mã:
Mã:
cd /etc/init.d/
vim mongod
Mã:
OPTIONS=" --auth -f $CONFIGFILE"
Tải lại dịch vụ systemd và khởi động lại MongoDB.
Mã:
systemctl daemon-reload
systemctl restart mongod
Mã:
mongo
use admin
show users
Mã:
db.auth('admin', 'admin123')
MongoDB 3.2 đã được cài đặt và cấu hình trên CentOS 7 Server.