Thêm tài khoản nguời dùng trong MongoDB

Khi bạn mới lần đầu cài đặt và dùng MongoDb có thể bạn sẽ có vài nhầm lẫn trong việc thêm hay xóa một user trong MongoDB, do đó trong bài viết này tôi sẽ hướng dẫn các bạn cách thao tác trên nó

Trứoc tiên tôi sẽ sử các bạn đã cài đặt nó, nếu chưa thì có thể vào trang chủ https://docs.mongodb.com/manual/installation/ để tham khảo, trong truờng hợp của tôi là Centos thì tôi chỉ cần chạy lệnh

[code lang=text] cat >/etc/yum.repos.d/mongodb-org-3.4.repo <<DELIM
[mongodb-org-3.4] name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
DELIM

[/code]

Sau đó tôi chạy lệnh sau để cài đặt

[code lang=text] sudo yum install -y mongodb-org

[/code]

Để xác nhận nó thành công hay chưa bạn chỉ việc chạy lệnh mongo hoặc nếu dùng Centos chay lệnh systemctl status mongod kết quả nó nên có dạng thế này

[php] [[email protected] dbbackup]# systemctl status mongod
● mongod.service – High-performance, schema-free document-oriented database
Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2017-09-19 04:41:32 UTC; 3 days ago
Docs: https://docs.mongodb.org/manual
Process: 6060 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS)
Process: 6058 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCESS)
Process: 6057 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS)
Main PID: 6065 (mongod)
CGroup: /system.slice/mongod.service
└─6065 /usr/bin/mongod -f /etc/mongod.conf

Sep 19 04:41:32 ip-172-31-67-76.ec2.internal systemd[1]: Starting High-performance, schema….
Sep 19 04:41:32 ip-172-31-67-76.ec2.internal systemd[1]: Started High-performance, schema-….
Sep 19 04:41:32 ip-172-31-67-76.ec2.internal mongod[6062]: about to fork child process, wa….
Sep 19 04:41:32 ip-172-31-67-76.ec2.internal mongod[6062]: forked process: 6065
Hint: Some lines were ellipsized, use -l to show in full.

[/php]

Tạo user quyền cao nhất

Bạn cần phải hoàn thành các buớc trên truớc khi thao tác các buớc tiếp theo. Mặc định khi cài đặt xong MongoDB nó không có tạo cho bạn username và password do đó bạn chỉ cần gõ lệnh sau để kết nối

[code lang=text] mongo

[/code]

kết quả nó như sau

MongoDB có rất là nhiều role cho các database tuơng ứng chãng hạn như read, readWrite, dbAdmin hiểu rõ hơn thì truy cập qua đuờng dẫn này https://docs.mongodb.com/manual/reference/built-in-roles/ nhưng có một role cao nhất đó là role root, bạn cân phải cẩn thận khi dùng nó.

Sau khi kết nối vào shell của MongoDB thì kế đến bạn kết nối vào database mặc định của nó là admin với lệnh sau:

[code lang=text] use admin

[/code]

sau đó chạy lệnh bên duới đây để tạo root user

[code lang=text] db.createUser({user: "root", pwd: "phanbook", roles:[{role: "root", db: "admin"}]})

[/code]

kết quả của lệnh trên thì nên giống như hình bên duới

Ứng dụng vào bài toán thực tế

Khi làm việc với dự án web thực tế thì bạn sẽ tạo tứng user khác nhau tuơng ứng với database khác nhau thông qua user root mình vừa tạo ở trên, ví dụ mình có muốn tạo một database cho cái app mình với tên là lackky, user và password để xác thực database này không nên là user mình tạo ở trên, mà phải là user đuợc tạo mới thông qua user root

Bạn connect lại mongo shell bằng dòng lệnh sau để xác nhận chứng thực:

[code lang=text] mongo -u root -p –authenticationDatabase admin

[/code]

tất nhiên bạn cũng có thể kết xác thưc trong shell như sau cách nào cũng được

[code lang=text] db.auth("root","phanbook")

[/code]

Nhưng khi chạy lệnh này bạn sẽ có lỗi như sau

[php] > db.auth("root","phanbook")
Error: Authentication failed.
0
>
[/php]

bạn cần phải chạy lệnh use admin trước khi chạy lệnh đó

[php] > use admin
switched to db admin
> db.auth("root","phanbook")
1
>
[/php]

Kế đến bạn tạo mới database mà bạn muốn dùng thông qua lệnh use

[code lang=text] use lackky

[/code]

sau đó tạo user và password mới với tên gọi là phanbook và role của nó readWrite, dbAdmin là thông qua lệnh createUser:

[php] db.createUser(
{
user: "phanbook",
pwd: "phanbook",
roles: [ "readWrite", "dbAdmin" ] }
)

[/php]

kết quả bạn sẽ nhận được như hình bên duới

kết Luận

Vậy là bạn đã thao tác xong các bước cơ bản trong MongoDB về việc thêm user rồi, tôi hay vọng các tip này hữu ích đối với các bạn. Như mọi khi nếu bạn thấy bài viết hay thì hãy chia sẽ

Leave a Reply

Your email address will not be published. Required fields are marked *