MongoDB入门指南

MongoDB是什么

百度吧~

MongoDB安装Server

ubuntu安装:MongoDB 官网

# 第一步,官网下载tar包。 
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2004-6.0.2.tgz

# 解压并移动到习惯的目录
tar -zxvf mongodb-linux-x86_64-ubuntu2004-6.0.2.tgz
mv mongodb-linux-x86_64-ubuntu2004-6.0.2 /usr/local/mongodb

# 设置系统环境变量
sudo vim ~/.bashrc
export PATH=$PATH:/usr/local/mongodb/bin
source ~/.bashrc

# 启动mongo,指定库路径和日志路径
mongod --dbpath=/var/lib/mongodb --logpath=/var/log/mongodb

docker安装:

FROM mongo:latest

VOLUME /data/configdb /data/db

EXPOSE 27017

CMD ["mongo"]
# 通过Dockerfile文件构建镜像
docker build -t my_mongo:latest .

# 创建容器
docker container run -d -p 27017:27017 -v /home/zzp/mine/docker/mongo/data/configdb:/data/configdb -v /home/zzp/mine/docker/mongo/data/db:/data/db --name mongo my_mongo --auth
  • --auth: 默认mongo不需要用户密码也是可以登陆的, 只有带上了–auth参数, 表示开启权限认证服务

账户管理

为了保证线上数据库的安全,我们需要给数据库设置权限验证。这里我直接在docker容器里面创建账号,本机安装的原理是一样的,只需要进入Server的Shell后台即可。

docker exec -it mongo mongosh admin

创建一个管理账户,用来管理普通用户:

db.createUser({
   user: "root",
   pwd: "123456",
   roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})

创建一个普通账户,用来管理数据库:

# 创建一个普通用户,对biancheng库拥有读写权限
db.createUser({
   user: "admin001",
   pwd: "admin001",
   roles: [ { role: "readWrite", db: "biancheng" } ]
})

常用的role值记录:

  • 数据库用户角色:read、readWrite
  • 数据库管理角色:dbAdmin、dbOwner、userAdmin
  • 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
  • 备份恢复角色:backup、restore
  • 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  • 超级用户角色:root

role值相应的含义:

  • Read:允许用户读取指定数据库
  • readWrite:允许用户读写指定数据库
  • dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
  • userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
  • clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限
  • readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
  • readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
  • userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
  • dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限
  • root:只在admin数据库中可用。超级账号,超级权限

接下来尝试客户端带上密码连接:

# 客户端连接
mongo -u root -p 123456 --authenticationDatabase admin

# 查看是否连接成功,一般能看到所有数据库即代表成功
show dbs

删除一个用户:

db.dropUser("admin001")

修改一个用户的密码:

db.changeUserPassword('admin001','12345678');

基础操作

操作库:

# 优雅关闭server
mongod --shutdown --dbpath=/var/lib/mongodb

# 查看所有数据库
show dbs

# 进入数据库数据库,不存在则创建
use test

# 删除数据库
db.dropDatabase()

操作集合:

# 创建集合
db.createCollection(name, options)

注意点:

  • 如果是空的数据表,在show dbs的时候是不会展示的,必须向该数据库写入数据

Java连接MongoDB

maven依赖

<dependency>
      <groupId>org.mongodb</groupId>
      <artifactId>mongodb-driver</artifactId>
      <version>3.12.11</version>
</dependency>
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;

public class MongoDbApplication {
    public static void main(String[] args) {

        // 创建 MongoDB 连接
        MongoClientURI mongoClientURI = new MongoClientURI("mongodb://admin:123456@127.0.0.1:27017/admin");
        MongoClient mongo = new MongoClient( mongoClientURI);

        // 访问数据库
        MongoDatabase database = mongo.getDatabase("biancheng");

        // 获取集合
        MongoCollection<Document> website = database.getCollection("website");

        Document document = new Document()
                .append("title", "PHP")
                .append("description", "世界上最好的语言!")
                .append("url", "https://www.php.net/manual/zh/index.php");
        website.insertOne(document);

        FindIterable<Document> iterableDoc = website.find();
        MongoCursor<Document> iterator = iterableDoc.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }

        System.out.println("文档创建成功");
    }
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇