IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> mongodb基本语句和用户管理--02 -> 正文阅读

[大数据]mongodb基本语句和用户管理--02

1. 基本语句

查看库
分号可加可不加

show databases;
show dbs;
use yq 不用创建,use会自动创建,表插入数据也会自动创建

默认使用json的格式存储数据,不区分类型,都是字符串

数据库的对象
库databases
表collection
行 document

db级别命令

db  当前所在的库
db.[tab]  使用tab补全
db.help 查看帮助

collection级别的操作

db.collection.xxx

插入数据
db.t1.insert({name:"yq"})

复制集有关的操作

rs.

分片的操作

sh.

帮助命令的使用

show 
use 
db.help()
db.a.help()
rs.help()
sh.help()

常规的操作

db 或 db.getName()显示当前的数据库
show dbs查询所有库
use local切换数据库
show tables查看表
db.stats()显示当前数据库状态
db.getMongo()查看当前数据库的连接机器地址

库的操作

创建数据库:
当use的时候,系统就会自动创建一个数据库。
如果use之后没有创建任何集合。
系统就会删除这个数据库。

删除数据库
如果没有选择任何数据库,会删除默认的test数据库
删除:

use test

db.dropDatabase()   

集合操作

创建
use  yq
db.createCollection('a')
db.createCollection('b')
show collections
db.getCollectionNames()

插入数据
当插入一个文档的时候,一个集合就会自动创建
use oldboy
db.oldguo.insert({id : "1021" ,name : "zhssn" ,age : "22" ,gender : "female",address : "sz"})


查询数据:
db.oldguo.find({id:"101"}).pretty()
db.oldguo.find().pretty()

删除集合
use app
db.log.drop()
log就是你要删除的集合的名字

重命名集合
db.log.renameCollection("log1")
show collections

批量的插入
for(i=0;i<10000;i++){db.log.insert({"uid":i,"name":"mongodb","age":6,"date":new
Date()})}

查询数据
所有
db.t1.find()
注:默认每页显示20条记录,当显示不下的的情况下,可以用it迭代命令查询下一页数据。
设置每页显示数据的大小:
> DBQuery.shellBatchSize=50; //每页显示50条记录

查看第1条记录
db.log.findOne()

删除集合中的记录数
db.log.remove({})

查询去掉当前集合中某列的重复数据
db.log.distinct("name")

查看集合存储信息
app> db.log.stats()
app> db.log.dataSize() //集合中数据的原始大小
app> db.log.totalIndexSize() //集合中索引数据的原始大小
app> db.log.totalSize() //集合中索引+数据压缩存储之后的大小    *****
app> db.log.storageSize() //集合中数据压缩存储的大小

2. 用户的管理

验证库,建立用户时use到的库,在使用用户时,要加上验证库才能登陆。对于管理员用户,必须在admin下创建.

  1. 建用户时,use到的库,就是此用户的验证库
  2. 登录时,必须明确指定验证库才能登录
  3. 通常,管理员用的验证库是admin,普通用户的验证库一般是所管理的库设置为验证库
  4. 如果直接登录到数据库,不进行use,默认的验证库是test,不是我们生产建议的.

2.1 创建用户的格式

use admin 
db.createUser
{
    user: "<name>",
    pwd: "<cleartext password>",
    roles: [
       { role: "<role>",
     db: "<database>" } | "<role>",
    ...
    ]
}

说明:

基本语法说明:
user:用户名
pwd:密码
roles:
    role:角色名
    db:作用对象	
role:root, readWrite,read   

验证数据库:
mongo -u oldboy -p 123 10.0.0.51/oldboy

2.2 创建一个超级管理员用户

2.2.1 创建用户

mongo
use admin 

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

验证用户
db.auth('root','root123')

2.2.2 配置文件的修改

添加
开启用户验证

security:
  authorization: enabled

总的配置文件

systemLog:
   destination: file
   path: "/mongodb/log/mongodb.log"
   logAppend: true
storage:
   journal:
      enabled: true
   dbPath: "/mongodb/data/"
processManagement:
   fork: true
net:
   port: 27017
   bindIp: 192.168.80.51,127.0.0.1
security:
  authorization: enabled

重启

mongod -f /mongodb/conf/mongo.conf --shutdown 
mongod -f /mongodb/conf/mongo.conf 

登录验证

mongo -uroot -proot123  admin
mongo -uroot -proot123  192.168.80.51/admin

注意
在这里插入图片描述
假若我们这样mongo -uroot -proot123 192.168.80.51,就会报错,必须跟库的名称,在那个库下创建的就跟那个库的名称

[mongod@db01 conf]$ mongo  -uroot -proot123 192.168.80.51/admin 
MongoDB shell version v3.6.12
connecting to: mongodb://192.168.80.51:27017/admin?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("c912c54c-8bc4-40cf-a4d1-34b0c4bba38c") }
MongoDB server version: 3.6.12
> 

用户的查看

use admin
db.system.user.find().pretty()

> db.system.users.find().pretty()
{
	"_id" : "admin.root",
	"user" : "root",
	"db" : "admin",
	"credentials" : {
		"SCRAM-SHA-1" : {
			"iterationCount" : 10000,
			"salt" : "kj0Un9SNfWD9kCM6gOgW0A==",
			"storedKey" : "XYnQioev6EmzZesxjy3Sdkarydc=",
			"serverKey" : "NmySZOdIuOLKQb5IUWY/hSnjTi4="
		}
	},
	"roles" : [
		{
			"role" : "root",
			"db" : "admin"
		}
	]
}

2.3 创建管理用户dbAdmin,只能对库进行操作

mongo -uroot -proot123  admin

use app

db.createUser(
{
user: "admin",
pwd: "admin",
roles: [ { role: "dbAdmin", db: "app" } ]
}
)

db.auth('admin','admin')

mongo -uadmin -padmin 10.0.0.51/app

2.4 创建一个库的用户,可读写

超级管理员用户登录
mongo -uroot -proot123 admin

use app

db.createUser(
	{
		user: "app01",
		pwd: "app01",
		roles: [ { role: "readWrite" , db: "app" } ]
	}
)

验证

本地
mongo -uapp01 -papp01 app
远程
mongo -uapp01 -papp01 192.168.80.51/app

2.5 创建app数据库读写权限的用户并对test数据库具有读权限

mongo -uroot -proot123 192.168.80.51/admin
use app
db.createUser(
{
user: "app03",
pwd: "app03",
roles: [ { role: "readWrite", db: "app" },
{ role: "read", db: "test" }]})

2.6 查询所有的用户

mongo  -uroot -proot123 admin 
db.system.users.find().pretty()

2.7 删除用户

在那个库下边创建的用户,use库里边进行删除
必须登录管理员的账户

mongo -uroot -proot123 192.168.80.51/admin
use app
db.dropUser("app01")
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-24 08:01:04  更:2021-11-24 08:02:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:45:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码