我的常用命令
=== docker相關(guān) start ===
1、版本 \ 信息
docker version
docker info
2刊懈、啟動(dòng)docker服務(wù) (啟動(dòng) 这弧、停止)
systemctl start docker
systemctl stop docker
3、查看image文件
docker images
docker image ls
4虚汛、刪除 image 文件
docker image rm [imagename]
docker rmi [imagename]
5匾浪、從倉(cāng)庫(kù)抓取image到本地
docker image pull library/hello-world
docker image pull hello-world
6、運(yùn)行image 文件
docker container run hello-world
7卷哩、終止容器
docker container kill [containID]
8蛋辈、停用全部運(yùn)行中的容器
docker stop $(docker ps -q)
9、列出容器
列出本機(jī)正在運(yùn)行的容器
docker container ls
列出本機(jī)所有容器,包括終止運(yùn)行的容器
docker container ls --all
10冷溶、刪除容器文件
docker container rm [containerID]
刪除全部容器
docker rm $(docker ps -aq)
11渐白、docker 獲取鏡像
docker pull mysql:5.7
12、docker 啟動(dòng)容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-a stdin: 指定標(biāo)準(zhǔn)輸入輸出內(nèi)容類(lèi)型逞频,可選 STDIN/STDOUT/STDERR 三項(xiàng)纯衍;
-d: 后臺(tái)運(yùn)行容器,并返回容器ID苗胀;
-i: 以交互模式運(yùn)行容器襟诸,通常與 -t 同時(shí)使用;
-P: 隨機(jī)端口映射基协,容器內(nèi)部端口隨機(jī)映射到主機(jī)的端口
-p: 指定端口映射歌亲,格式為:主機(jī)(宿主)端口:容器端口
-t: 為容器重新分配一個(gè)偽輸入終端,通常與 -i 同時(shí)使用澜驮;
--name="nginx-lb": 為容器指定一個(gè)名稱(chēng)陷揪;
--dns 8.8.8.8: 指定容器使用的DNS服務(wù)器,默認(rèn)和宿主一致杂穷;
--dns-search example.com: 指定容器DNS搜索域名诡挂,默認(rèn)和宿主一致度帮;
-h "mars": 指定容器的hostname;
-e username="ritchie": 設(shè)置環(huán)境變量;
--env-file=[]: 從指定文件讀入環(huán)境變量呈宇;
--cpuset="0-2" or --cpuset="0,1,2": 綁定容器到指定CPU運(yùn)行蔗草;
-m : 設(shè)置容器使用內(nèi)存最大值吩跋;
--net="bridge": 指定容器的網(wǎng)絡(luò)連接類(lèi)型撇叁,支持 bridge/host/none/container: 四種類(lèi)型;
--link=[]: 添加鏈接到另一個(gè)容器劲藐;
--expose=[]: 開(kāi)放一個(gè)端口或一組端口八堡;
--volume , -v: 綁定一個(gè)卷
docker run -p 39100:3306 --name mysql -v $PWD/conf/my.cnf:/etc/mysql/my.cnf -v $PWD/logs:/logs -v $PWD/data:/mysql_data -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
docker run -p 9527:3306 --name mysql -v $PWD/conf/my.cnf:/etc/mysql/my.cnf -v $PWD/logs:/logs -v $PWD/data:/mysql_data -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
-p 3306:3306: 將容器的3306端口映射到主機(jī)的3306端口
-v $PWD/conf/my.cnf:/etc/mysql/my.cnf: 將主機(jī)當(dāng)前目錄下的conf/my.cnf掛載到容器的/etc/mysql/my.cnf
-v $PWD/logs:/logs: 將主機(jī)當(dāng)前目錄下的logs目錄掛載到容器的/logs
-v $PWD/data:/mysql_data: 將主機(jī)當(dāng)前目錄下的data目錄掛載到容器的/mysql_data
-e MYSQL_ROOT_PASSWORD=123456: 初始化root用戶(hù)的密碼
13、進(jìn)入容器
docker exec -it mysql bash
mysql -uroot -proot
show databases;
14 拷貝文件到docker容器的命令
docker cp /xxxxx.sql mysqldb1:/root/
15 查看容器詳情
docker inspect 容器名
16 打包聘芜、導(dǎo)出兄渺、導(dǎo)入
```
對(duì)鏡像進(jìn)行導(dǎo)出導(dǎo)入
將鏡像導(dǎo)出為一個(gè)鏡像img文件
docker save redis -o redis.img
將img鏡像文件導(dǎo)入,復(fù)制出一個(gè)完全一樣鏡像
docker load --input redis.img
```
```
對(duì)容器進(jìn)行導(dǎo)入導(dǎo)出
將容器導(dǎo)出為一個(gè)鏡像tar文件
docker export lwjubuntu > lwjubuntu.tar
將鏡像tar文件導(dǎo)入汰现,生成一個(gè)新鏡像
導(dǎo)入后是生成一個(gè)新鏡像而不是直接生成容器挂谍。
docker import - lwjubuntu_new < lwjubuntu.tar
```
=== docker相關(guān) end ===
======== docker-compose 常用命令 ========
1 后臺(tái)啟動(dòng)容器,保持運(yùn)行
docker-compose up -d
2 查看容器的啟動(dòng)日志
docker-compose logs -f
```
docker-compose up -d : 構(gòu)建構(gòu)建當(dāng)前目錄下的docker-compose
docker-compose exec 容器名 bash : 登錄到容器中
docker-compose down : 刪除所有容器, 鏡像
docker-compose ps : 顯示所有容器
docker-compose restart : 重新啟動(dòng)當(dāng)前目錄下的docker-compose容器
docker-compose run --no-deps --rm php-fpm php -v: 在php-fpm中不啟動(dòng)關(guān)聯(lián)容器,并容器執(zhí)行php -v 執(zhí)行完成后刪除容器
docker-compose build : 構(gòu)建當(dāng)前目錄下的docker-compose
docker-compose build --no-cache nginx : 不帶緩存的構(gòu)建瞎饲。
docker-compose logs nginx : 查看nginx的日志
docker-compose logs -f nginx : 查看nginx的實(shí)時(shí)日志
docker-compose config -q : 驗(yàn)證(docker-compose.yml)文件配置口叙,當(dāng)配置正確時(shí),不輸出任何內(nèi)容嗅战,當(dāng)文件配置錯(cuò)誤妄田,輸出錯(cuò)誤信息俺亮。
docker-compose events --json nginx : 以json的形式輸出nginx的docker日志
docker-compose pause nginx : 暫停nignx容器
docker-compose unpause nginx : 恢復(fù)ningx容器
docker-compose rm nginx : 刪除容器(刪除前必須關(guān)閉容器)
docker-compose stop nginx : 停止nignx容器
docker-compose start nginx : 啟動(dòng)nignx容器
-d : 指定在后臺(tái)以守護(hù)進(jìn)程方式運(yùn)行服務(wù)容器
-no-color : 設(shè)置不使用顏色來(lái)區(qū)分不同的服務(wù)器的控制輸出
-no-deps : 設(shè)置不啟動(dòng)服務(wù)所鏈接的容器
-force-recreate : 設(shè)置強(qiáng)制重新創(chuàng)建容器,不能與--no-recreate選項(xiàng)同時(shí)使用疟呐。
--no-create : 若容器已經(jīng)存在則不再重新創(chuàng)建脚曾,不能與--force-recreate選項(xiàng)同時(shí)使用。
--no-build : 設(shè)置不自動(dòng)構(gòu)建缺失的服務(wù)鏡像
--build : 設(shè)置在啟動(dòng)容器前構(gòu)建服務(wù)鏡像
--abort-on-container-exit: 若任何一個(gè)容器被停止則停止所有容器启具,不能與選項(xiàng)-d同時(shí)使用本讥。
-t,--timeout TIMEOUT : 設(shè)置停止容器時(shí)的超時(shí)秒數(shù),默認(rèn)為10秒鲁冯。
--remove-orphans : 設(shè)置刪除服務(wù)中沒(méi)有在compose文件中定義的容器
--scale SERVICE=NUM : 設(shè)置服務(wù)運(yùn)行容器的個(gè)數(shù)囤踩,此選項(xiàng)將會(huì)負(fù)載在compose中通過(guò)scale指定的參數(shù)。
```
======== linux相關(guān) ========
linux 常用命令歸納大全
=== 一晓褪、系統(tǒng)信息處理 ===
arch 顯示機(jī)器的處理器架構(gòu)
uname -m 顯示機(jī)器的處理器架構(gòu)
uname -r 顯示正在使用的內(nèi)核版本
dmidecode -q 顯示硬件系統(tǒng)部件 - (SMBIOS / DMI)
hdparm -i /dev/hda 羅列一個(gè)磁盤(pán)的架構(gòu)特性
hdparm -tT /dev/sda 在磁盤(pán)上執(zhí)行測(cè)試性讀取操作
cat /proc/cpuinfo 顯示CPU的信息
cat /proc/interrupts 顯示中斷
cat /proc/meminfo 校驗(yàn)內(nèi)存使用
cat /proc/swaps 顯示哪些swap被使用
cat /proc/version 顯示內(nèi)核的版本
cat /proc/net/dev 顯示網(wǎng)絡(luò)適配器及統(tǒng)計(jì)信息
cat /proc/mounts 顯示已加載的文件系統(tǒng)
lspci -tv 羅列出所有的 PCI 設(shè)備
lsusb -tv 顯示 USB 設(shè)備
date 顯示系統(tǒng)日期
cal 2020 顯示2020年的日歷表
date 顯示系統(tǒng)當(dāng)前時(shí)間
clock -w 將時(shí)間修改保存到 BIOS
=== 二、文件操作相關(guān) ===
cd /home 進(jìn)入 '/ home' 目錄'
cd .. 返回上一級(jí)目錄
cd ../.. 返回上兩級(jí)目錄
cd 進(jìn)入個(gè)人的主目錄
cd ~user1 進(jìn)入個(gè)人的主目錄
cd - 返回上次所在的目錄
pwd 顯示當(dāng)前工作路徑
ls 查看目錄中的文件
ls -F 查看目錄中的文件
ls -l 顯示文件和目錄的詳細(xì)資料
ls -a 顯示隱藏文件
ls *[0-9]* 顯示包含數(shù)字的文件名和目錄名
tree 顯示文件和目錄由根目錄開(kāi)始的樹(shù)形結(jié)構(gòu)
du 參數(shù) 目錄
-h : 單位以用戶(hù)友好方式展示
-c : 統(tǒng)計(jì)目錄文件大小
-a : 顯示目錄下所有的文件
--time : 顯示目錄文件修改的最后時(shí)間
--exclude: 排除某個(gè)目錄
-s : 直接顯示目錄的使用大小
-BK : 以KB為單位顯示目錄大小
-BM : 以MB為單位顯示目錄大小
-BG : 以GB為單位顯示目錄大小
mkdir dir1 創(chuàng)建一個(gè)叫做 'dir1' 的目錄
mkdir dir1 dir2 同時(shí)創(chuàng)建兩個(gè)目錄
mkdir -p /tmp/dir1/dir2 創(chuàng)建一個(gè)目錄樹(shù)
mkdir 2023091{0..4} -p 創(chuàng)建連續(xù)的目錄
touch 2023091{0..4}.dat 創(chuàng)建連續(xù)的文件
rm -f file1 刪除一個(gè)叫做 'file1' 的文件'
rmdir dir1 刪除一個(gè)叫做 'dir1' 的目錄'
rm -rf dir1 刪除一個(gè)叫做 'dir1' 的目錄并同時(shí)刪除其內(nèi)容
rm -rf dir1 dir2 同時(shí)刪除兩個(gè)目錄及它們的內(nèi)容
mv dir1 new_dir 重命名/移動(dòng) 一個(gè)目錄
cp file1 file2 復(fù)制一個(gè)文件
cp dir/* . 復(fù)制一個(gè)目錄下的所有文件到當(dāng)前工作目錄
cp -a /tmp/dir1 . 復(fù)制一個(gè)目錄到當(dāng)前工作目錄
cp -a dir1 dir2 復(fù)制一個(gè)目錄
ln -s file1 lnk1 創(chuàng)建一個(gè)指向文件或目錄的軟鏈接
ln file1 lnk1 創(chuàng)建一個(gè)指向文件或目錄的物理鏈接
touch -t YYMMDDhhmm file1 修改一個(gè)文件或目錄的時(shí)間戳
iconv -l 列出已知的編碼
=== 三综慎、以太網(wǎng)和WIFI無(wú)線相關(guān)命令 ===
ifconfig eth0 顯示一個(gè)以太網(wǎng)卡的配置
ifup eth0 啟用一個(gè) 'eth0' 網(wǎng)絡(luò)設(shè)備
ifdown eth0 禁用一個(gè) 'eth0' 網(wǎng)絡(luò)設(shè)備
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 控制IP地址
ifconfig eth0 promisc 設(shè)置 'eth0' 成混雜模式以嗅探數(shù)據(jù)包 (sniffing)
dhclient eth0 以dhcp模式啟用 'eth0'
route -n show routing table
route add -net 0/0 gw IP_Gateway configura default gateway
route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 configure static route to reach network '192.168.0.0/16'
=== 四涣仿、 APT 軟件工具 ===
apt-get install package_name 安裝/更新一個(gè) deb 包
apt-cdrom install package_name 從光盤(pán)安裝/更新一個(gè) deb 包
apt-get update 升級(jí)列表中的軟件包
apt-get upgrade 升級(jí)所有已安裝的軟件
apt-get remove package_name 從系統(tǒng)刪除一個(gè)deb包
apt-get check 確認(rèn)依賴(lài)的軟件倉(cāng)庫(kù)正確
apt-get clean 從下載的軟件包中清理緩存
apt-cache search searched-package 返回包含所要搜索字符串的軟件包名稱(chēng)
=== 五、 備份操作 ===
dump -0aj -f /tmp/home0.bak /home 制作一個(gè) '/home' 目錄的完整備份
dump -1aj -f /tmp/home0.bak /home 制作一個(gè) '/home' 目錄的交互式備份
restore -if /tmp/home0.bak 還原一個(gè)交互式備份
rsync -rogpav --delete /home /tmp 同步兩邊的目錄
rsync -rogpav -e ssh --delete /home ip_address:/tmp 通過(guò)SSH通道rsync
rsync -az -e ssh --delete ip_addr:/home/public /home/local 通過(guò)ssh和壓縮將一個(gè)遠(yuǎn)程目錄同步到本地目錄
rsync -az -e ssh --delete /home/local ip_addr:/home/public 通過(guò)ssh和壓縮將本地目錄同步到遠(yuǎn)程目錄
dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr 'dd of=hda.gz' 通過(guò)ssh在遠(yuǎn)程主機(jī)上執(zhí)行一次備份本地磁盤(pán)的操作
dd if=/dev/sda of=/tmp/file1 備份磁盤(pán)內(nèi)容到一個(gè)文件
tar -Puf backup.tar /home/user 執(zhí)行一次對(duì) '/home/user' 目錄的交互式備份操作
( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr 'cd /home/share/ && tar x -p' 通過(guò)ssh在遠(yuǎn)程目錄中復(fù)制一個(gè)目錄內(nèi)容
( tar c /home ) | ssh -C user@ip_addr 'cd /home/backup-home && tar x -p' 通過(guò)ssh在遠(yuǎn)程目錄中復(fù)制一個(gè)本地目錄
tar cf - . | (cd /tmp/backup ; tar xf - ) 本地將一個(gè)目錄復(fù)制到另一個(gè)地方示惊,保留原有權(quán)限及鏈接
find /home/user1 -name '*.txt' | xargs cp -av --target-directory=/home/backup/ --parents 從一個(gè)目錄查找并復(fù)制所有以 '.txt' 結(jié)尾的文件到另一個(gè)目錄
find /var/log -name '*.log' | tar cv --files-from=- | bzip2 > log.tar.bz2 查找所有以 '.log' 結(jié)尾的文件并做成一個(gè)bzip包
dd if=/dev/hda of=/dev/fd0 bs=512 count=1 做一個(gè)將 MBR (Master Boot Record)內(nèi)容復(fù)制到軟盤(pán)的動(dòng)作
dd if=/dev/fd0 of=/dev/hda bs=512 count=1 從已經(jīng)保存到軟盤(pán)的備份中恢復(fù)MBR內(nèi)容
=== 六好港、YUM 軟件包升級(jí)器 ===
yum install package_name 下載并安裝一個(gè)rpm包
yum localinstall package_name.rpm 將安裝一個(gè)rpm包,使用你自己的軟件倉(cāng)庫(kù)為你解決所有依賴(lài)關(guān)系
yum update package_name.rpm 更新當(dāng)前系統(tǒng)中所有安裝的rpm包
yum update package_name 更新一個(gè)rpm包
yum remove package_name 刪除一個(gè)rpm包
yum list 列出當(dāng)前系統(tǒng)中安裝的所有包
yum search package_name 在rpm倉(cāng)庫(kù)中搜尋軟件包
yum clean packages 清理rpm緩存刪除下載的包
yum clean headers 刪除所有頭文件
yum clean all 刪除所有緩存的包和頭文件
=== 七米罚、用戶(hù)與群組相關(guān)命令 ===
groupadd group_name 創(chuàng)建一個(gè)新用戶(hù)組
groupdel group_name 刪除一個(gè)用戶(hù)組
groupmod -n new_group_name old_group_name 重命名一個(gè)用戶(hù)組
useradd -c "Name Surname " -g admin -d /home/user1 -s /bin/bash user1 創(chuàng)建一個(gè)屬于 "admin" 用戶(hù)組的用戶(hù)
useradd user1 創(chuàng)建一個(gè)新用戶(hù)
userdel -r user1 刪除一個(gè)用戶(hù) ( '-r' 排除主目錄)
usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1 修改用戶(hù)屬性
passwd 修改口令
passwd user1 修改一個(gè)用戶(hù)的口令 (只允許root執(zhí)行)
chage -E 2005-12-31 user1 設(shè)置用戶(hù)口令的失效期限
pwck 檢查 '/etc/passwd' 的文件格式和語(yǔ)法修正以及存在的用戶(hù)
grpck 檢查 '/etc/passwd' 的文件格式和語(yǔ)法修正以及存在的群組
newgrp group_name 登陸進(jìn)一個(gè)新的群組以改變新創(chuàng)建文件的預(yù)設(shè)群組
=== 八钧汹、磁盤(pán)空間相關(guān) ===
df -h 顯示已經(jīng)掛載的分區(qū)列表
ls -lSr |more 以尺寸大小排列文件和目錄
du -sh dir1 估算目錄 'dir1' 已經(jīng)使用的磁盤(pán)空間'
du -sk * | sort -rn 以容量大小為依據(jù)依次顯示文件和目錄的大小
rpm -q -a --qf '%10{SIZE}t%{NAME}n' | sort -k1,1n 以大小為依據(jù)依次顯示已安裝的rpm包所使用的空間 (fedora, redhat類(lèi)系統(tǒng))
dpkg-query -W -f='${Installed-Size;10}t${Package}n' | sort -k1,1n 以大小為依據(jù)顯示已安裝的deb包所使用的空間 (ubuntu, debian類(lèi)系統(tǒng))
=== 九、壓縮解壓 ===
bunzip2 file1.bz2 解壓一個(gè)叫做 'file1.bz2'的文件
bzip2 file1 壓縮一個(gè)叫做 'file1' 的文件
gunzip file1.gz 解壓一個(gè)叫做 'file1.gz'的文件
gzip file1 壓縮一個(gè)叫做 'file1'的文件
gzip -9 file1 最大程度壓縮
rar a file1.rar test_file 創(chuàng)建一個(gè)叫做 'file1.rar' 的包
rar a file1.rar file1 file2 dir1 同時(shí)壓縮 'file1', 'file2' 以及目錄 'dir1'
unrar x file1.rar 解壓rar包
tar -cvf archive.tar file1 : 創(chuàng)建一個(gè)非壓縮的 tarball
tar -cvf archive.tar file1 file2 dir1: 創(chuàng)建一個(gè)包含了 'file1', 'file2' 以及 'dir1'的檔案文件
tar -tf archive.tar : 顯示一個(gè)包中的內(nèi)容
tar -xvf archive.tar : 釋放一個(gè)包
tar -xvf archive.tar -C /tmp : 將壓縮包釋放到 /tmp目錄下
tar -cvfj archive.tar.bz2 dir1 : 創(chuàng)建一個(gè)bzip2格式的壓縮包
tar -jxvf archive.tar.bz2 : 解壓一個(gè)bzip2格式的壓縮包
tar -zcvf archive.tar.gz dir1 : 創(chuàng)建一個(gè)gzip格式的壓縮包
tar -zxvf archive.tar.gz : 解壓一個(gè)gzip格式的壓縮包
zip file1.zip file1 : 創(chuàng)建一個(gè)zip格式的壓縮包
zip -r file1.zip file1 file2 dir1: 將幾個(gè)文件和目錄同時(shí)壓縮成一個(gè)zip格式的壓縮包
unzip file1.zip : 解壓一個(gè)zip格式壓縮包
=== 十录择、 文件權(quán)限操作 ===
ls -lh 顯示權(quán)限
ls /tmp | pr -T5 -W$COLUMNS 將終端劃分成5欄顯示
chmod ugo+rwx directory1 設(shè)置目錄的所有人(u)拔莱、群組(g)以及其他人(o)以讀(r )、寫(xiě)(w)和執(zhí)行(x)的權(quán)限
chmod go-rwx directory1 刪除群組(g)與其他人(o)對(duì)目錄的讀寫(xiě)執(zhí)行權(quán)限
chown user1 file1 改變一個(gè)文件的所有人屬性
chown -R user1 directory1 改變一個(gè)目錄的所有人屬性并同時(shí)改變改目錄下所有文件的屬性
chgrp group1 file1 改變文件的群組
chown user1:group1 file1 改變一個(gè)文件的所有人和群組屬性
find / -perm -u+s 羅列一個(gè)系統(tǒng)中所有使用了SUID控制的文件
chmod u+s /bin/file1 設(shè)置一個(gè)二進(jìn)制文件的 SUID 位 - 運(yùn)行該文件的用戶(hù)也被賦予和所有者同樣的權(quán)限
chmod u-s /bin/file1 禁用一個(gè)二進(jìn)制文件的 SUID位
chmod g+s /home/public 設(shè)置一個(gè)目錄的SGID 位 - 類(lèi)似SUID 隘竭,不過(guò)這是針對(duì)目錄的
chmod g-s /home/public 禁用一個(gè)目錄的 SGID 位
chmod o+t /home/public 設(shè)置一個(gè)文件的 STIKY 位 - 只允許合法所有人刪除文件
chmod o-t /home/public 禁用一個(gè)目錄的 STIKY 位
=== 十一塘秦、文件搜索相關(guān) ===
find / -name file1 從 '/' 開(kāi)始進(jìn)入根文件系統(tǒng)搜索文件和目錄
find / -user user1 搜索屬于用戶(hù) 'user1' 的文件和目錄
find /home/user1 -name \*.bin 在目錄 '/ home/user1' 中搜索帶有'.bin' 結(jié)尾的文件
find /usr/bin -type f -atime +100 搜索在過(guò)去100天內(nèi)未被使用過(guò)的執(zhí)行文件
find /usr/bin -type f -mtime -10 搜索在10天內(nèi)被創(chuàng)建或者修改過(guò)的文件
find / -name \*.rpm -exec chmod 755 '{}' \; 搜索以 '.rpm' 結(jié)尾的文件并定義其權(quán)限
find / -xdev -name \*.rpm 搜索以 '.rpm' 結(jié)尾的文件,忽略光驅(qū)动看、捷盤(pán)等可移動(dòng)設(shè)備
locate \*.ps 尋找以'.ps'結(jié)尾的文件
whereis halt 顯示一個(gè)二進(jìn)制文件、源碼或man的位置
which halt 顯示一個(gè)二進(jìn)制文件或可執(zhí)行文件的完整路徑
=== 十二菱皆、 系統(tǒng)重啟及關(guān)機(jī) ===
shutdown -h now : 關(guān)閉系統(tǒng)
init 0 : 關(guān)閉系統(tǒng)
telinit 0 : 關(guān)閉系統(tǒng)
shutdown -h hours: minutes &: 按預(yù)定時(shí)間關(guān)閉系統(tǒng)
shutdown -c : 取消按預(yù)定時(shí)間關(guān)閉系統(tǒng)
shutdown -r now : 重啟
reboot : 重啟
logout : 注銷(xiāo)
=== 十三、 防火墻相關(guān) ===
systemctl start firewalld : 啟動(dòng)
systemctl status firewalld : 查看狀態(tài)
systemctl stop firewalld : 停止
systemctl disable firewalld : 禁用
systemctl start firewalld.service : 啟動(dòng)一個(gè)服務(wù)
systemctl stop firewalld.service : 關(guān)閉一個(gè)服務(wù)
systemctl restart firewalld.service : 重啟一個(gè)服務(wù)
systemctl status firewalld.service : 顯示一個(gè)服務(wù)的狀態(tài)
systemctl enable firewalld.service : 在開(kāi)機(jī)時(shí)啟用一個(gè)服務(wù)
systemctl disable firewalld.service : 在開(kāi)機(jī)時(shí)禁用一個(gè)服務(wù)
systemctl is-enabled firewalld.service: 查看服務(wù)是否開(kāi)機(jī)啟動(dòng)
systemctl list-unit-files|grep enabled: 查看已啟動(dòng)的服務(wù)列表
systemctl --failed : 查看啟動(dòng)失敗的服務(wù)列表
firewall-cmd --version : 查看版本
firewall-cmd --help : 查看幫助
firewall-cmd --state : 顯示狀態(tài)
firewall-cmd --get-active-zones : 查看區(qū)域信息
firewall-cmd --get-zone-of-interface=eth0: 查看指定接口所屬區(qū)域
firewall-cmd --panic-on : 拒絕所有包
firewall-cmd --panic-off : 取消拒絕狀態(tài)
firewall-cmd --query-panic : 查看是否拒絕
firewall-cmd --zone=public --list-ports : 查看所有打開(kāi)的端口
firewall-cmd --reload : 更新防火墻規(guī)則
firewall-cmd --zone=public --add-port=80/tcp --permanent : 添加端口 ( --permanent永久生效束莫,沒(méi)有此參數(shù)重啟后失效)
firewall-cmd --zone= public --remove-port=80/tcp --permanent: 刪除端口
=== 十四壶栋、nginx 命令 ===
查看進(jìn)程號(hào)
ps -ef|grep nginx 找到nginx 安裝目錄和配置文件目錄
1、驗(yàn)證nginx配置文件是否正確
...nginx/sbin 目錄下
./nginx -t
2运准、啟動(dòng)nginx
/www/server/nginx/sbin/nginx -c /www/server/nginx/conf/nginx.conf
/www/server/nginx/sbin/nginx -t -c /www/server/nginx/conf/nginx.conf
3幌氮、重啟nginx
...nginx/sbin 目錄下
./nginx -s reload
nginx 操作
cd /usr/local/nginx
sudo ./nginx -t
sudo ./nginx -s reload
ps:
nginx -s reload :修改配置后重新加載生效
nginx -s reopen :重新打開(kāi)日志文件
nginx -t -c /path/to/nginx.conf 測(cè)試nginx配置文件是否正確
#啟動(dòng)操作 -c參數(shù)指定了要加載的nginx配置文件路徑
nginx -c /usr/local/nginx/conf/nginx.conf
4、停止nginx
./nginx -s stop : 快速停止nginx
./nginx -s quit :完整有序的停止nginx
=== 掛載一個(gè)文件系統(tǒng) ===
mount /dev/hda2 /mnt/hda2 掛載一個(gè)叫做hda2的盤(pán) - 確定目錄 '/ mnt/hda2' 已經(jīng)存在
umount /dev/hda2 卸載一個(gè)叫做hda2的盤(pán) - 先從掛載點(diǎn) '/ mnt/hda2' 退出
fuser -km /mnt/hda2 當(dāng)設(shè)備繁忙時(shí)強(qiáng)制卸載
umount -n /mnt/hda2 運(yùn)行卸載操作而不寫(xiě)入 /etc/mtab 文件- 當(dāng)文件為只讀或當(dāng)磁盤(pán)寫(xiě)滿(mǎn)時(shí)非常有用
mount /dev/fd0 /mnt/floppy 掛載一個(gè)軟盤(pán)
mount /dev/cdrom /mnt/cdrom 掛載一個(gè)cdrom或dvdrom
mount /dev/hdc /mnt/cdrecorder 掛載一個(gè)cdrw或dvdrom
mount /dev/hdb /mnt/cdrecorder 掛載一個(gè)cdrw或dvdrom
mount -o loop file.iso /mnt/cdrom 掛載一個(gè)文件或ISO鏡像文件
mount -t vfat /dev/hda5 /mnt/hda5 掛載一個(gè)Windows FAT32文件系統(tǒng)
mount /dev/sda1 /mnt/usbdisk 掛載一個(gè)usb 捷盤(pán)或閃存設(shè)備
mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share 掛載一個(gè)windows網(wǎng)絡(luò)共享
=== vim 相關(guān) ===
:u 撤銷(xiāo)
:%d 清空內(nèi)容
:wq 保存退出
:set number 顯示行號(hào)
=== 雜項(xiàng) ===
熱鍵
Tab 一鍵補(bǔ)全命令
Ctrl + c 停止正在運(yùn)行的程序
Ctrl + d 相當(dāng)于exit 退出
Ctrl + l 清屏
shutdown 關(guān)機(jī) (服務(wù)器一般不關(guān)機(jī),正常情況下很少很少用, 所以慎用)
reboot 重啟命令
--help 幫助命令
man 命令說(shuō)明書(shū)
創(chuàng)建連續(xù)的目錄胁澳、文件
mkdir 2023091{0..4} -p
touch 2023091{0..4}.dat
linux 查看可疑IP登陸
last -f /var/log/wtmp
linux 清除記錄
echo > /var/log/wtmp : 清除用戶(hù)登錄記錄
echo > /var/log/lastlog: 清除最近登錄信息
echo > /var/log/secure : 登錄信息
echo > .bash_history : 清除保存的用戶(hù)操作歷史記錄·
history -cw : 清除所有歷史
查看占用端口
lsof -i
lsof -i:9002
24 linux文件傳輸
【優(yōu)點(diǎn)】簡(jiǎn)單方便该互,安全可靠;支持限速參數(shù)
【缺點(diǎn)】不支持排除目錄
【用法】
scp就是secure copy韭畸,是用來(lái)進(jìn)行遠(yuǎn)程文件拷貝的慢洋。數(shù)據(jù)傳輸使用 ssh,并且和ssh 使用相同的認(rèn)證方式陆盘,提供相同的安全保證 。
命令格式:
scp [參數(shù)] <源地址(用戶(hù)名@IP地址或主機(jī)名)>:<文件路徑> <目的地址(用戶(hù)名 @IP 地址或主機(jī)名)>:<文件路徑>
把本地的source.txt文件拷貝到192.168.43.52機(jī)器上的/home/admin目錄下
scp /var/www/html/drupal/door.php admin@192.168.43.52:/home/admin
scp nginx.img root@192.168.33.35:/root
把192.168.43.52機(jī)器上的daye.txt文件拷貝到本地的/home/james目錄下
scp admin@192.168.43.52:/home/admin/daye.txt /home/james
把192.168.43.52機(jī)器上的door.php文件拷貝到192.168.43.226機(jī)器的/home/james目錄下
scp admin@192.168.43.52:/home/admin/door.php root@192.168.43.226:/home/james
---------------------數(shù)據(jù)庫(kù) mysql----------------------
1败明、Mysql 連接
mysql -u【用戶(hù)名】 -p 【密碼】 -P 【端口】 -h 【主機(jī)】
mysql -uroot -proot -P3306
2隘马、退出
exit
3、MySQL 創(chuàng)建數(shù)據(jù)庫(kù)
create database 【數(shù)據(jù)庫(kù)名】
4妻顶、刪除數(shù)據(jù)庫(kù)
drop database 【數(shù)據(jù)庫(kù)名】
5酸员、選擇數(shù)據(jù)庫(kù)
use 【數(shù)據(jù)庫(kù)名】
6、創(chuàng)建表
CREATE TABLE table_name (column_name column_type);
CREATE TABLE `user` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(255) DEFAULT NULL COMMENT '用戶(hù)賬號(hào)',
`nickname` varchar(255) DEFAULT NULL COMMENT '用戶(hù)昵稱(chēng)',
`realname` varchar(255) DEFAULT NULL COMMENT '真實(shí)姓名',
`avatar` varchar(30) DEFAULT '' COMMENT '用戶(hù)頭像',
`password` varchar(255) DEFAULT NULL COMMENT '賬戶(hù)密碼',
`ori_password` varchar(255) DEFAULT NULL COMMENT '初始密碼',
`mobile` varchar(255) DEFAULT NULL COMMENT '手機(jī)號(hào)碼',
`headimg` varchar(255) DEFAULT NULL COMMENT '用戶(hù)頭像',
`login_date` datetime DEFAULT NULL COMMENT '登錄時(shí)間',
`login_ip` varchar(255) DEFAULT NULL COMMENT '登錄IP',
`create_time` datetime DEFAULT NULL COMMENT '創(chuàng)建時(shí)間',
`update_time` datetime DEFAULT NULL COMMENT '更新時(shí)間',
`status` int(11) DEFAULT '1' COMMENT '狀態(tài)(0-禁用 1-啟用)',
`id_card_top` varchar(255) DEFAULT NULL COMMENT '身份證正面',
`id_card_back` varchar(255) DEFAULT NULL COMMENT '身份證背面',
`mail` varchar(255) DEFAULT NULL COMMENT '郵箱',
`cloud_id` varchar(32) DEFAULT NULL COMMENT 'timid',
`role_id` smallint(1) DEFAULT NULL COMMENT '角色id',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
create table 新表 like 舊表
create table 新表 as select 列,列,讳嘱。幔嗦。。from 舊表
7 mysql 創(chuàng)建管理用戶(hù) yonghu
create user 用戶(hù) identified by '密碼';
create user yonghu identified by 'mima';
8 賦予 yonghu 數(shù)據(jù)庫(kù)權(quán)限
grant all privileges on 數(shù)據(jù)庫(kù).* to '用戶(hù)'@'%';
grant all privileges on www_lyjblog_com.* to 'yonghu'@'%';
-- 刷新數(shù)據(jù)庫(kù)
flush privileges;
9 查看用戶(hù)權(quán)限
show grants for 'yonghu';
10 再次驗(yàn)證 需要root用戶(hù)
select User,Db,host,Select_priv,Insert_priv,Update_priv,Delete_priv from mysql.db where User='yonghu';
11 導(dǎo)出數(shù)據(jù)
mysqldump -h主機(jī)名 -P端口 -u用戶(hù)名 -p密碼 參數(shù)1沥潭,參數(shù)2.... > 備份文件.sql
-- 導(dǎo)出全部數(shù)據(jù)庫(kù)
mysqldump -uroot -p1234 --all-databases > /root/db_back/all.sql
mysqldump -uroot -p1234 -A > /root/db_back/all.sql
mysqldump -P33061 -uroot -p -A > E:/資料下載/all_datebase_33061.sql
12 刪除表
drop table 表名
13 顯示表的屬性信息
desc 表名
14 增加列
alter table 表名 add 列名 類(lèi)型
15 刪除列
alter table 表名 drop 列名
16 修改一個(gè)列名
alter table 表名 change 列名 新列名 類(lèi)型
17 修改類(lèi)型
alter table 表名 modify 列名 新類(lèi)型
18 增加邀泉、刪除主鍵
alter table 表名 add primary key 列名
alter table 表名 drop primary key 列名
19 查詢(xún)語(yǔ)句
關(guān)鍵字:
1.or: 或
2.and: 和
3.having: 分組后的附加條件
4.group by:分組
5.order by:排序:asc:正序,desc:倒序
6.in: 存在于某個(gè)值中
7.not in: 不存在與某個(gè)值中
8.inner join … on: 鏈接多表
9.left join … on: 左外連接
10.right join … on:右外連接
11.left(right钝鸽,inner) out join … on: 去重
12.count: 計(jì)數(shù)
13.AVG: 平均值
14.sum: 求和
15.max: 最大值
16.min: 最小值
17.like ‘關(guān)鍵字%’: 取含有關(guān)鍵字的值
18.distinct: 去重
19.round: 四舍五入
20.where 1=1: 全選
21.where 1=2: 全不選
22.limit 1,5: 從第二行開(kāi)始顯示5條數(shù)據(jù)
23.top 10:select top 10 * from 表名:顯示前十條數(shù)據(jù)
24.newid(): 隨機(jī)
1.選擇查詢(xún):
select * from 表名 where 范圍
2.完全查詢(xún):
select * from 表名
3.模糊查詢(xún):
select * from 表名 where 列名 like ‘%value%’(查詢(xún)包含value的值)
4.排序查詢(xún)(倒序汇恤,默認(rèn)為正序):
select * from 表名 order by 列名 desc
5.計(jì)數(shù)查詢(xún):
select count as 別名 from 表名
6.求和查詢(xún):
select sum(field) as 別名 from 表名
7.平均值查詢(xún):
select avg(filed) as 別名 from 表名
8.最大值查詢(xún):
select max(filed) as 別名 from 表名
9.最小值查詢(xún):
select min(filed) as 別名 from 表名
10.四舍五入查詢(xún):
select round(min(filed),要保留的小數(shù)位數(shù)) as 別名 from 表名
11.去重查詢(xún):
select distinct 列名 from 表名
12.分組查詢(xún):
select * from 表名 group by 列名
13.多條件查詢(xún):
select * from 表名 where 列名=‘范圍’ and 列名=‘范圍’
14.不確定條件查詢(xún):
select * from 表名 where 列名=‘范圍’ or 列名=‘范圍’
15.多條件分組求值查詢(xún):
select 列名拔恰,min(filed)from 表名 where 列名=‘范圍’ group by 列名 having sum(列名)
16.子查詢(xún)(子查詢(xún)的結(jié)果作為主查詢(xún)的條件):
select * from 表名 where=(select id from 表名 where 列名=‘范圍’)
17.連表查詢(xún)(內(nèi)連接):
select * from 表名 inner join 表名 on 主鍵=外鍵(必須有主外鍵)
18.連表查詢(xún)(內(nèi)連接)(去重):
select * from 表名 inner out join 表名 on 主鍵=外鍵(必須有主外鍵)
注:內(nèi)連接只顯示相關(guān)聯(lián)的數(shù)據(jù)
19.連表查詢(xún)(左外連接)(顯示左表的全部信息和右表相關(guān)聯(lián)的信息):
select * from 表名 left join 表名 on 主鍵=外鍵(必須有主外鍵)
20.連表查詢(xún)(右外連接)(顯示右表的全部信息和左表相關(guān)聯(lián)的信息):
select * from 表名 right join 表名 on 主鍵=外鍵(必須有主外鍵)
21.連表查詢(xún)(全外連接)(顯示兩個(gè)表中的所有記錄):
select * from 表名 full/cross join 表名 on 主鍵=外鍵(必須有主外鍵)
22.說(shuō)明:幾個(gè)高級(jí)查詢(xún)運(yùn)算詞
A:union(結(jié)合兩個(gè)結(jié)果表并消除其中的重復(fù)行而派生出另一個(gè)表)
例:select name from 表名1 union select name from 表名2(去除name的重復(fù)行)
B:except(通過(guò)包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重復(fù)行而派生出一個(gè)結(jié)果表)
C:intersect(通過(guò)只包括 TABLE1 和 TABLE2 中都有的行并消除所有重復(fù)行而派生出一個(gè)結(jié)果表)
注:當(dāng)這三個(gè)運(yùn)算符與all一起使用時(shí)不消除重復(fù)行
20 數(shù)據(jù)操作語(yǔ)句:插入因谎、修改、刪除
1.數(shù)據(jù)插入
完全插入:insert into 表名 values(值1,值2,值3,…)
選擇插入:insert into 表名(列名1,列名2,列名,3…) values(值1,值2,值3,…)
批量插入:insert into 表名 values(值1,值2,值3,…),(值1,值2,值3,…),(值1,值2,值3,…)…
注1:完全插入可以省略列名颜懊,但是值必須包含所有字段财岔,批量插入類(lèi)同
注2:選擇插入必須選擇需要插入的字段风皿,選擇對(duì)應(yīng)字段的值,批量插入類(lèi)同
2.修改語(yǔ)句
update 表名 set 列名=‘值’ where 列名=‘范圍’
where 1=1(全選)
where 1=2(全不選)
注:不加where條件為修改所有指定列的值
3.刪除語(yǔ)句
delete from 表名 where 列名=‘范圍’
注:不加where條件為刪除所有的值
======== git 相關(guān) ========
1 創(chuàng)建版本庫(kù)
git clone url: 克隆遠(yuǎn)程版本庫(kù)
git init : 初始化當(dāng)前目錄為本地版本庫(kù)
2 提交 修改
git status : 查看狀態(tài)
git diff : 查看變更內(nèi)容
git diff 8218a37ef 6a4c8b786a1 : 兩個(gè)commit_id 的差異
git diff 8218a37ef 6a4c8b786a1 >> commit.diff: 兩個(gè)commit_id 的差異 導(dǎo)出到文件 commit.diff
git add . : 跟蹤所有改動(dòng)文件
git add filename : 跟蹤指定文件
git mv oldfile newfile : 文件改名
git rm filename : 刪除文件
git rm --cached filename : 停止跟蹤文件, 但不刪除
git commit -m "信息" : 提交所有更新過(guò)的文件, 并注釋
git commit --amend : 修改最后一次提交
3 查看提交歷史
git log 查看提交歷史
git log -p <file> 查看指定文件的提交歷史
git blame <file> 以列表的方式查看指定文件的提交歷史
4 撤銷(xiāo)
git reset --hard HEAD 撤銷(xiāo)工作目錄中所有未提交
git checkout HEAD <file> 撤銷(xiāo)指定未提交文件的修改內(nèi)容
git revert <commit> 撤銷(xiāo)指定的提交
5 分支和標(biāo)簽
git branch 顯示本地所有分支
git checkout <branch/tag> 切換指定分支或者標(biāo)簽
git branch <新分支> 創(chuàng)建新分支
git branch -d <分支> 刪除本地分支
git tag 顯示本地所有標(biāo)簽
git tag <標(biāo)簽> 基于最新提交創(chuàng)建新標(biāo)簽
git tag -d <標(biāo)簽> 刪除標(biāo)簽
6 合并與衍合
git merge <分支> 合并指定分支到當(dāng)前分支
git rebase <分支> 衍合指定分支到當(dāng)前分支
7 遠(yuǎn)程操作
git remote -v 查看遠(yuǎn)程本部庫(kù)信息
git remote show <remote> 查看指定遠(yuǎn)程版本庫(kù)信息
git remote add <remote> <url> 添加遠(yuǎn)程版本庫(kù)
git fetch <remote> 從遠(yuǎn)程獲取代碼
git pull <remote> <branch> 下載代碼及快速合并
git push <remote> <branch> 上傳代碼及快速合并
git push --tags 上傳所有標(biāo)簽
git push <remote> :<分支或者標(biāo)簽> 刪除遠(yuǎn)程分支或標(biāo)簽
======== nodepad++ 快捷鍵 ========
nodepad++常用快捷鍵
Ctrl+C : 復(fù)制
Ctrl+X : 剪切
Ctrl+V : 粘貼
Ctrl+Z : 撤消
Ctrl+Y : 恢復(fù)
Ctrl+A : 全選
Ctrl+F : 鍵查找對(duì)話框啟動(dòng)
Ctrl+H : 查找/替換對(duì)話框
Ctrl+D : 復(fù)制并粘貼當(dāng)行
Ctrl+L : 刪除當(dāng)前行
Ctrl+T : 當(dāng)行向上移動(dòng)一行
Ctrl+S : 保存文件
Ctrl+Alt+S : 另存為
Ctrl+Shift+S : 保存所有文件
Ctrl+B : 轉(zhuǎn)至匹配的括號(hào)
Ctrl+O : 打開(kāi)文件
Ctrl+N : 新建立文件
CTRL+G : 定位換行, 偏移量
Ctrl+W : 關(guān)閉當(dāng)前文檔
Ctrl+Tab : 下一個(gè)文檔
Ctrl+Shift+Tab : 上一個(gè)文檔
Ctrl+鼠標(biāo)滾輪鈕 : 放大縮小
Ctrl+BackSpace : 刪除開(kāi)始詞
Ctrl+Delete : 刪除結(jié)束詞
CTRL+U : 轉(zhuǎn)換為小寫(xiě)
Ctrl+Shift+U : 轉(zhuǎn)換為大寫(xiě)
Ctrl+Shift+BackSpace: 刪除至行首
Ctrl+Shift+Delete : 刪除至行尾
Ctrl+P : 打印
Ctrl+I : 選擇當(dāng)前行
Ctrl+Alt+R : 從右邊閱讀
Ctrl+Alt+L : 從左邊閱讀
Ctrl+Q : 塊注釋/消除注釋
Ctrl+Shift+T : 打開(kāi)最近關(guān)閉Ctrl+C 復(fù)制
Ctrl+X : 剪切
Ctrl+V : 粘貼
Ctrl+Z : 撤消
Ctrl+Y : 恢復(fù)
Ctrl+A : 全選
Ctrl+F : 鍵查找對(duì)話框啟動(dòng)
Ctrl+H : 查找/替換對(duì)話框
Ctrl+D : 復(fù)制并粘貼當(dāng)行
Ctrl+L : 刪除當(dāng)前行
Ctrl+T : 當(dāng)行向上移動(dòng)一行
Ctrl+S : 保存文件
Ctrl+Alt+S : 另存為
Ctrl+Shift+S : 保存所有文件
Ctrl+B : 轉(zhuǎn)至匹配的括號(hào)
Ctrl+O : 打開(kāi)文件
Ctrl+N : 新建立文件
CTRL+G : 定位換行, 偏移量
Ctrl+W : 關(guān)閉當(dāng)前文檔
Ctrl+Tab : 下一個(gè)文檔
Ctrl+Shift+Tab : 上一個(gè)文檔
Ctrl+鼠標(biāo)滾輪鈕 : 放大縮小
Ctrl+BackSpace : 刪除開(kāi)始詞
Ctrl+Delete : 刪除結(jié)束詞
CTRL+U : 轉(zhuǎn)換為小寫(xiě)
Ctrl+Shift+U : 轉(zhuǎn)換為大寫(xiě)
Ctrl+Shift+BackSpace: 刪除至行首
Ctrl+Shift+Delete : 刪除至行尾
Ctrl+P : 打印
Ctrl+I : 選擇當(dāng)前行
Ctrl+Alt+R : 從右邊閱讀
Ctrl+Alt+L : 從左邊閱讀
Ctrl+Q : 塊注釋/消除注釋
Ctrl+Shift+T : 打開(kāi)最近關(guān)閉
F5 :啟動(dòng)運(yùn)行對(duì)話框
Tab :插入縮進(jìn)
Shift+Tab :刪除縮進(jìn)
=== nodepad++常用快捷鍵 end ===
=== mongo 語(yǔ)法 start ===
=== 創(chuàng)建數(shù)據(jù)庫(kù)
use 數(shù)據(jù)庫(kù)
show dbs
ps:插入數(shù)據(jù)才會(huì)顯示匠璧,集合插入數(shù)據(jù)才會(huì)真的創(chuàng)建
db.lyj.insert({"name":"mongo教程"})
=== 刪除數(shù)據(jù)庫(kù)
db.dropDatabase()
use 數(shù)據(jù)庫(kù)
db.dropDatabase()
=== 創(chuàng)建集合 增
db.數(shù)據(jù)表.insert({"name":"數(shù)據(jù)表"})
// 插入一行
db.users.insert({
name: "John Doe",
email: "john.doe@example.com",
age: 30
})
// 插入多行
db.users.insertMany([{
name: "John Doe",
email: "john.doe@example.com",
age: 31
}, {
name: "張三",
email: "john.doe@example.com",
age: 23
}, {
name: "lisi",
email: "john.doe@example.com",
age: 33
}])
=== 刪除集合\數(shù)據(jù) 刪
db.數(shù)據(jù)表.drop()
db.collection.remove(<query>)
db.users.remove({ "name": "John" })
db.users.remove([{ "age": 25 }, { "age": 30 }])
需要注意的是桐款,remove命令在默認(rèn)情況下會(huì)永久刪除匹配的文檔,而且無(wú)法撤銷(xiāo)患朱。在執(zhí)行remove命令之前鲁僚,請(qǐng)確保你已經(jīng)備份了重要的數(shù)據(jù),并且要謹(jǐn)慎使用該命令裁厅。
=== 更新文檔 改
// 更新數(shù)據(jù) 語(yǔ)法
db.collection.update(
<query>,
{
$set: {
<field1>: <value1>,
<field2>: <value2>,
...
}
}
)
// 更新數(shù)據(jù)
db.users.update(
{
name: "John Doe9"
},
{
$set: {
age: 44,
email: "john@example.com"
}
},
false,
true
)
// 替換整個(gè)文檔
db.users.replaceOne({
_id: "123457",
}, {
name: "John Doe9",
email: "john.doe@example.com",
age: 30
})
// 允許更新字段
db.users.updateOne({
_id: "123457",
}, {
$set: {
age: 22
}
})
update操作適用于僅更新部分字段的情況冰沙,可以按需對(duì)文檔進(jìn)行修改,不需要提供一個(gè)完整的新文檔执虹。update操作更加靈活拓挥,可以通過(guò)不同的操作符進(jìn)行精準(zhǔn)地字段級(jí)別的更新。然而袋励,由于update操作是在原始文檔的基礎(chǔ)上進(jìn)行修改侥啤,因此可能會(huì)引入一些潛在的風(fēng)險(xiǎn),例如并發(fā)更新可能導(dǎo)致數(shù)據(jù)不一致問(wèn)題茬故。
replace操作適用于需要一次性完全替換整個(gè)文檔的情況盖灸,確保文檔的結(jié)構(gòu)和內(nèi)容都完全滿(mǎn)足新的需求。replace操作相對(duì)來(lái)說(shuō)更加安全磺芭,一次更新操作可以保證數(shù)據(jù)的一致性赁炎。然而,替換整個(gè)文檔可能需要提供完整的數(shù)據(jù)钾腺,可能會(huì)引起一些額外的開(kāi)銷(xiāo)徙垫。
要選擇合適的操作來(lái)更新或替換文檔,需要考慮到具體的需求和業(yè)務(wù)場(chǎng)景放棒。
// 與insert命令不同的是姻报,如果插入的文檔已有唯一索引,save方法將更新該文檔间螟,而不會(huì)拋出重復(fù)鍵錯(cuò)誤吴旋。
db.collection.save(document)
db.users.save({name: "John", age: 25})
=== 查詢(xún)文檔(數(shù)據(jù)) 查
db.collection.find(<query>)
// 查詢(xún)所有
db.collection.find({})
// 查詢(xún)特定字段
db.collection.find({ field: <value> })
// 查詢(xún)多個(gè)字段
db.collection.find({ field1: <value1>, field2: <value2> })
// 查詢(xún)特定字段的 不等于 !=
db.collection.find({ field: { $ne: <value> } })
// 查詢(xún)特定字段的 等于 ==
db.collection.find({ field: { $eq: <value> } })
// 查詢(xún)特定字段的 大于或等于 >=
db.collection.find({ field: { $gte: <value> } })
// 查詢(xún)特定字段的 小于或等于 <=
db.collection.find({ field: { $lte: <value> } })
// 查詢(xún)特定字段的值 包含 in
db.collection.find({ field: { $in: [<value1>, <value2>, ...] } })
// 查詢(xún)特定字段的值 不包含 not in
db.collection.find({ field: { $nin: [<value1>, <value2>, ...] } })
// 查詢(xún)符合 多個(gè)條件 and or
db.collection.find({ $and: [ {field1: <value1>}, {field2: <value2>} ] })
db.collection.find({ $or: [ {key1: value1}, {key2: value2} ] })
// or 和 and 組合使用
db.users.find({
$or: [
{
$and: [
{ age: { $gt: 25 } },
{ gender: "male", country: "USA" }
]
},
{
$and: [
{ age: { $gt: 30 } },
{ gender: "female", country: "UK" }
]
}
]
})
// 查詢(xún)特定字段匹配正則
db.collection.find({ field: /regex/ })
=== 操作符 ===
MongoDB是一種流行的NoSQL數(shù)據(jù)庫(kù),它使用查詢(xún)語(yǔ)言來(lái)操作文檔集合厢破。MongoDB支持多種操作符來(lái)執(zhí)行查詢(xún)和操作數(shù)據(jù)邮府。下面是一些常用的MongoDB操作符:
$match: 用于篩選文檔。它相當(dāng)于SQL中的WHERE子句溉奕。
db.collection.find({ $match: { field: value } })
$eq: 等于操作符褂傀,用于比較字段的值是否相等。
db.collection.find({ field: { $eq: value } })
$ne: 不等于操作符加勤,用于比較字段的值是否不相等仙辟。
db.collection.find({ field: { $ne: value } })
$gt同波、$lt: 大于、小于操作符叠国,用于比較字段的值未檩。
db.collection.find({ field: { $gt: value } })
db.collection.find({ field: { $lt: value } })
$gte: 大于等于操作符,用于比較字段的值是否大于或等于給定值粟焊。
db.collection.find({ field: { $gte: value } })
$lte: 小于等于操作符冤狡,用于比較字段的值是否小于或等于給定值。
db.collection.find({ field: { $lte: value } })
$in: 用于判斷字段的值是否在給定值列表中项棠。
db.collection.find({ field: { $in: [value1, value2, ...] } })
$nin: 用于判斷字段的值是否不在給定值列表中悲雳。
db.collection.find({ field: { $nin: [value1, value2, ...] } })
$regex: 正則表達(dá)式操作符,用于匹配字段的值與正則表達(dá)式香追。
db.collection.find({ field: { $regex: /pattern/ } })
$all: 用于判斷字段的值是否包含所有給定值合瓢。
db.collection.find({ field: { $all: [value1, value2, ...] } })
$elemMatch: 用于在一個(gè)數(shù)組字段中匹配多個(gè)條件。
db.collection.find({ arrayField: { $elemMatch: { field1: value1, field2: value2 } } })
$or: 或操作符透典,用于組合多個(gè)查詢(xún)條件晴楔,只要有一個(gè)條件滿(mǎn)足即可返回文檔。
db.collection.find({ $or: [query1, query2, ...] })
$and: 與操作符峭咒,用于組合多個(gè)查詢(xún)條件税弃,只有當(dāng)所有條件都滿(mǎn)足時(shí)才返回文檔。
db.collection.find({ $and: [query1, query2, ...] })
$not: 非操作符凑队,用于對(duì)查詢(xún)條件取反则果。
db.collection.find({ field: { $not: query } })
$set: 用于更新文檔中的字段值。
db.collection.updateOne({ field: value }, { $set: { field: newValue } })
$unset: 用于刪除文檔中的字段顽决。
db.collection.updateOne({ field: value }, { $unset: { field: true } })
$inc: 用于增加或減少文檔中的字段值。
db.collection.updateOne({ field: value }, { $inc: { field: increment } })
$push: 用于向數(shù)組字段中添加一個(gè)元素导匣。
db.collection.updateOne({ field: value }, { $push: { field: newValue } })
$pop: 用于從數(shù)組字段中刪除最后一個(gè)元素才菠。
db.collection.updateOne({ field: value }, { $pop: { field: true } })
$slice: 用于截取數(shù)組字段的子集。
db.collection.updateOne({ field: value }, { $slice: { field: start, end } })
$sort: 用于對(duì)數(shù)組字段進(jìn)行排序贡定。
db.collection.updateOne({ field: value }, { $sort: { field: 1 } }) // 升序
db.collection.updateOne({ field: value }, { $sort: { field: -1 } }) // 降序
$bitwise: 用于執(zhí)行位運(yùn)算操作赋访。
db.collection.updateOne({ field: value }, { $bitwise: { op: "AND", operand: mask } })
$regex: 用于在一個(gè)字符串字段中執(zhí)行正則表達(dá)式匹配。
db.collection.find({ field: { $regex: /pattern/ } })
$elemMatch: 用于在一個(gè)數(shù)組字段中匹配多個(gè)條件缓待。
db.collection.find({ arrayField: { $elemMatch: { field1: value1, field2: value2 } } })
$all: 用于在一個(gè)數(shù)組字段中匹配多個(gè)值蚓耽。
db.collection.find({ field: { $all: [value1, value2, ...] } })
$in: 用于在一個(gè)字段中匹配多個(gè)值。
db.collection.find({ field: { $in: [value1, value2, ...] } })
$or: 用于組合多個(gè)查詢(xún)條件旋炒,只要有一個(gè)條件滿(mǎn)足即可返回文檔步悠。
db.collection.find({ $or: [query1, query2, ...] })
$and: 用于組合多個(gè)查詢(xún)條件,只有當(dāng)所有條件都滿(mǎn)足時(shí)才返回文檔瘫镇。
db.collection.find({ $and: [query1, query2, ...] })
$nor: 用于組合多個(gè)查詢(xún)條件鼎兽,只有當(dāng)所有條件都不滿(mǎn)足時(shí)才返回文檔答姥。
db.collection.find({ $nor: [query1, query2, ...] })
1. `$eq` : 匹配字段值等于指定值的文檔。
2. `$ne` : 匹配字段值不等于指定值的文檔谚咬。
3. `$gt` : 匹配字段值大于指定值的文檔鹦付。
4. `$lt` : 匹配字段值小于指定值的文檔。
5. `$gte` : 匹配字段值大于等于指定值的文檔择卦。
6. `$lte` : 匹配字段值小于等于指定值的文檔敲长。
7. `$in` : 匹配字段值等于指定數(shù)組中的任何值的文檔。
8. `$nin` : 匹配字段值不包含在指定數(shù)組中的文檔秉继。
9. `$or` : 多個(gè)查詢(xún)條件中至少滿(mǎn)足一個(gè)的文檔祈噪。
10. `$and` : 多個(gè)查詢(xún)條件必須同時(shí)滿(mǎn)足的文檔。
11. `$not` : 排除滿(mǎn)足指定查詢(xún)條件的文檔秕噪。
12. `$nor` : 排除滿(mǎn)足所有指定查詢(xún)條件的文檔钳降。
13. `$where` : 通過(guò)JavaScript代碼自定義查詢(xún)條件的文檔。
14. `$exists` : 匹配字段存在(包括字段值為null)的文檔腌巾。
15. `$type` : 匹配字段值為指定數(shù)據(jù)類(lèi)型的文檔遂填。
16. `$mod` : 匹配字段值被除有指定余數(shù)的文檔。
17. `$regex` : 正則表達(dá)式可以匹配到的文檔澈蝙。
18. `$text` : 針對(duì)創(chuàng)建了全文索引的字段進(jìn)行文本搜索吓坚。
19. `.`(點(diǎn)號(hào)) : 用于訪問(wèn)嵌套的文檔字段。
20. `$elemMatch` : 在數(shù)組字段中匹配多個(gè)查詢(xún)條件的文檔灯荧。
21. `$size` : 匹配具有指定長(zhǎng)度的數(shù)組的文檔礁击。
22. `$all` : 匹配包含所有指定值的數(shù)組字段的文檔。
23. `$with` : 在聚合管道操作符中啟用聚合框架的文檔逗载。
24. `$group` : 在聚合管道操作符中對(duì)輸入文檔進(jìn)行分組的文檔哆窿。
25. `$sum` : 在聚合管道操作符中計(jì)算指定字段的總和的文檔。
26. `$avg` : 在聚合管道操作符中計(jì)算指定字段的平均值的文檔厉斟。
27. `$min` : 在聚合管道操作符中找出指定字段的最小值的文檔挚躯。
28. `$max` : 在聚合管道操作符中找出指定字段的最大值的文檔。
29. `$limit` : 在聚合管道操作符中限制返回的文檔數(shù)量的文檔擦秽。
30. `$skip` : 在聚合管道操作符中跳過(guò)指定數(shù)量的文檔的文檔码荔。
31. `$notequal` : 匹配不等于指定值的文檔,與`$ne`相反感挥。
32. `$gt_unsigned` : 匹配無(wú)符號(hào)類(lèi)型字段大于指定值的文檔缩搅。
33. `$lt_unsigned` : 匹配無(wú)符號(hào)類(lèi)型字段小于指定值的文檔。
34. `$gte_unsigned` : 匹配無(wú)符號(hào)類(lèi)型字段大于等于指定值的文檔触幼。
35. `$lte_unsigned` : 匹配無(wú)符號(hào)類(lèi)型字段小于等于指定值的文檔硼瓣。
36. `$regex_match` : 用于在字段上執(zhí)行正則表達(dá)式匹配的操作符。
37. `$regex_test` : 用于測(cè)試正則表達(dá)式是否匹配文檔的操作符置谦。
38. `$regex_contains` : 用于判斷一個(gè)字段的值是否包含指定正則表達(dá)式的操作符巨双。
39. `$regex_search` : 用于在文本字段上執(zhí)行正則表達(dá)式搜索的操作符噪猾。
40. `$text_search` : 用于在文本字段上執(zhí)行文本搜索的操作符。
41. `$text_match` : 用于在文本字段上執(zhí)行匹配文本搜索的操作符筑累。
42. `$text_contains` : 用于判斷一個(gè)文本字段是否包含指定關(guān)鍵詞的操作符袱蜡。
43. `$text_search_contains`: 用于判斷一個(gè)文本字段是否包含指定搜索條件的結(jié)果的操作符。
44. `$near` : 用于在地理位置字段上搜索附近的文檔的操作符慢宗。
45. `$geoWithin` : 用于在地理位置字段上搜索多邊形區(qū)域內(nèi)的文檔的操作符坪蚁。
46. `$geoIntersects` : 用于在地理位置字段上搜索與多邊形區(qū)域交集的文檔的操作符。
47. `$all_with` : 用于在數(shù)組字段上匹配所有數(shù)組元素的操作符镜沽。
48. `$all_elemMatch` : 用于在數(shù)組字段上匹配滿(mǎn)足指定條件的所有元素的操作符敏晤。
49. `$all_size` : 用于獲取數(shù)組字段長(zhǎng)度等于指定值的文檔的操作符。
50. `$all_eq` : 用于獲取數(shù)組字段包含指定值的文檔的操作符缅茉。
51. `$elemMatch` : 在數(shù)組字段中匹配多個(gè)查詢(xún)條件的文檔嘴脾。
52. `$all` : 匹配包含所有指定值的數(shù)組字段的文檔。
53. `$some` : 匹配至少包含指定條件的數(shù)組字段的文檔蔬墩。
54. `$none` : 匹配不包含指定條件的數(shù)組字段的文檔译打。
55. `$in` : 匹配字段值在指定數(shù)組中的文檔。
56. `$nin` : 匹配字段值不在指定數(shù)組中的文檔拇颅。
57. `$or` : 多個(gè)查詢(xún)條件中至少滿(mǎn)足一個(gè)的文檔奏司。
58. `$and` : 多個(gè)查詢(xún)條件必須同時(shí)滿(mǎn)足的文檔。
59. `$not` : 排除滿(mǎn)足指定查詢(xún)條件的文檔樟插。
60. `$nor` : 排除滿(mǎn)足所有指定查詢(xún)條件的文檔韵洋。
61. `$mod` : 匹配字段值被除有指定余數(shù)的文檔。
62. `$regex` : 正則表達(dá)式可以匹配到的文檔黄锤。
63. `$text` : 針對(duì)創(chuàng)建了全文索引的字段進(jìn)行文本搜索搪缨。
64. `.`(點(diǎn)號(hào)) : 用于訪問(wèn)嵌套的文檔字段。
65. `$elemMatch` : 在數(shù)組字段中匹配多個(gè)查詢(xún)條件的文檔鸵熟。
66. `$size` : 匹配具有指定長(zhǎng)度的數(shù)組的文檔副编。
67. `$all` : 匹配包含所有指定值的數(shù)組字段的文檔。
68. `$with` : 在聚合管道操作符中啟用聚合框架的文檔旅赢。
69. `$group` : 在聚合管道操作符中對(duì)輸入文檔進(jìn)行分組的文檔齿桃。
70. `$sum` : 在聚合管道操作符中計(jì)算指定字段的總和的文檔惑惶。
71. `$avg` : 在聚合管道操作符中計(jì)算指定字段的平均值的文檔煮盼。
72. `$min` : 在聚合管道操作符中找出指定字段的最小值的文檔。
73. `$max` : 在聚合管道操作符中找出指定字段的最大值的文檔带污。
74. `$limit` : 在聚合管道操作符中限制返回的文檔數(shù)量的文檔僵控。
75. `$skip` : 在聚合管道操作符中跳過(guò)指定數(shù)量的文檔的文檔。
76. `$sort` : 在聚合管道操作符中對(duì)輸入文檔進(jìn)行排序的文檔鱼冀。
77. `$project` : 在聚合管道操作符中修改輸入文檔結(jié)構(gòu)的文檔报破。
78. `$group` : 在聚合管道操作符中根據(jù)指定字段對(duì)輸入文檔進(jìn)行分組的文檔悠就。
79. `$sum` : 在聚合管道操作符中計(jì)算指定字段的總和的文檔。
80. `$avg` : 在聚合管道操作符中計(jì)算指定字段的平均值的文檔充易。
81. `$push` : 在聚合管道操作符中將指定字段的值添加到數(shù)組中的文檔梗脾。
82. `$addtoset` : 在聚合管道操作符中將指定字段的值添加到數(shù)組中,但不會(huì)重復(fù)的文檔盹靴。
83. `$pull` : 在聚合管道操作符中從數(shù)組中移除指定字段的值炸茧。
84. `$pullAll` : 在聚合管道操作符中從數(shù)組中移除多個(gè)指定的值。
85. `$each` : 在聚合管道操作符中迭代輸入文檔多次稿静,并將每次迭代的結(jié)果輸出為一個(gè)數(shù)組的文檔梭冠。
86. `$set` : 在聚合管道操作符中設(shè)置輸入文檔的指定字段的值。
87. `$unset` : 在聚合管道操作符中刪除輸入文檔的指定字段改备。
88. `$rename` : 在聚合管道操作符中重命名輸入文檔的指定字段控漠。
89. `$bit` : 在聚合管道操作符中執(zhí)行位運(yùn)算操作。
90. `$split` : 在聚合管道操作符中拆分字符串并返回一個(gè)數(shù)組悬钳。
91. `$lower` : 在聚合管道操作符中將字符串轉(zhuǎn)換為小寫(xiě)盐捷。
92. `$upper` : 在聚合管道操作符中將字符串轉(zhuǎn)換為大寫(xiě)。
93. `$concat` : 在聚合管道操作符中連接字符串他去。
94. `$expr` : 在聚合管道操作符中執(zhí)行復(fù)雜的表達(dá)式毙驯。
=== 聚合 基本語(yǔ)法 ===
db.collection.aggregate(pipeline, options)
=== project ===
1表示展示某字段
0表示不展示某字段
db.book.aggregate({
$project: {
"_id": 0,
"book_name": 1,
"borrowerIds": "$borrowers.id",
"borrowerNames": "$borrowers.name"
}
})
=== limit ===
只展示一個(gè)投影結(jié)果
db.book.aggregate([
{
$project: {
"_id": 0,
"book_name": 1,
"borrowerIds": "$borrowers.id",
"borrowerNames": "$borrowers.name"
}
},
{
$limit: 1
}
])
=== skip ===
跳過(guò)一個(gè)且只展示一個(gè)投影結(jié)果
db.book.aggregate([
{
$project: {
"_id": 0,
"book_name": 1,
"borrowerIds": "$borrowers.id",
"borrowerNames": "$borrowers.name"
}
},
{
$skip: 1
},
{
$limit: 1
}
])
=== sort ===
排序
db.book.aggregate([
{
$project: {
"_id": 1,
"book_name": 1,
"library_id": 1
}
},
{
$sort: {
"library_id": - 1, // 降序
"_id": 1 // 升序
}
}
])
MongoDB內(nèi)存排序有100M限制,如果排序數(shù)據(jù)過(guò)多需要設(shè)置選項(xiàng)allowDiskUse=true灾测,表示數(shù)據(jù)可以寫(xiě)入臨時(shí)文件進(jìn)行排序
db.book.aggregate([
{
$project: {
"_id": 1,
"book_name": 1,
"library_id": 1
}
},
{
$sort: {
"library_id": - 1,
"_id": 1
}
}
], {
allowDiskUse: true
})
=== out ===
投影結(jié)果輸出到新集合
db.book.aggregate([
{
$project: {
"_id": 0,
"book_name": 1,
"borrowerIds": "$borrowers.id",
"borrowerNames": "$borrowers.name"
}
},
{
$out: "newCollection"
}
])
db.newCollection.find()
=== match ===
匹配
db.book.aggregate([
{
$match: {
$and: [
{
"library_id": 2
},
{
"book_price": {
$gt: 25
}
}
]
}
},
{
$project: {
"_id": 1,
"book_name": 1,
"library_id": 1,
"book_price": 1
}
}
])
=== unwind ===
文檔按照借閱人數(shù)鋪平
db.book.aggregate([
{
$unwind: {
path: "$borrowers",
includeArrayIndex: "idx"
}
}
])
=== lookup ===
實(shí)現(xiàn)連表查詢(xún)
MongoDB 3.4之前聚合語(yǔ)法:
from:待關(guān)聯(lián)集合【book】
localField: 本集合關(guān)聯(lián)鍵【library】
foreignField:待關(guān)聯(lián)鍵【book】
as:待關(guān)聯(lián)集合數(shù)據(jù)【book】
db.library.aggregate([
{
$lookup:
{
from: "book",
localField: "_id",
foreignField: "library_id",
as: "books_info"
}
}
])
MongoDB 3.4之后聚合語(yǔ)法:
from:待關(guān)聯(lián)集合【book】
let:聲明本集合字段在管道使用
pipeline:操作管道
db.library.aggregate([
{
$lookup:
{
from: "book",
let: {
"lid": "$_id"
},
pipeline: [
{
$match: {
$expr: {
$and: [
{
$eq: ["$$lid", "$library_id"]
}
]
}
}
}
],
as: "books_info"
}
}
])
=== group ===
分組統(tǒng)計(jì)
db.book.aggregate([
{
$group: {
_id: "$book_type",
count: {
$sum: 1
}
}
}
])
db.book.aggregate([
{
$group: {
_id: "$book_type",
type_count: {
$sum: 1
},
type_book_count: {
$sum: "$book_count"
},
minTotalPrice: {
$min: {
$multiply: ["$book_price", "$book_count"]
}
},
maxTotalPrice: {
$max: {
$multiply: ["$book_price", "$book_count"]
}
},
totalPrice: {
$sum: {
$multiply: ["$book_price", "$book_count"]
}
},
avgPrice: {
$avg: "$book_price"
}
}
}
])
// 空分組鍵 _id:空分組鍵表示統(tǒng)計(jì)全量數(shù)據(jù)
db.book.aggregate([
{
$group: {
_id: null,
type_count: {
$sum: 1
},
type_book_count: {
$sum: "$book_count"
},
minTotalPrice: {
$min: {
$multiply: ["$book_price", "$book_count"]
}
},
maxTotalPrice: {
$max: {
$multiply: ["$book_price", "$book_count"]
}
},
totalPrice: {
$sum: {
$multiply: ["$book_price", "$book_count"]
}
},
avgPrice: {
$avg: "$book_price"
}
}
}
])
=== 聚合語(yǔ)法 end ===
=== mongo foreach ===
// 每個(gè)文檔執(zhí)行指定的操作
db.users.find({}).forEach(function(doc) {
// 年齡加1
doc.age = doc.age + 1;
db.users.save(doc);
})
=== 創(chuàng)建數(shù)據(jù)庫(kù)爆价,用戶(hù),并授權(quán) ===
=== 管理員登錄授權(quán)
use admin
db.auth('root','root')
=== 使用新數(shù)據(jù)庫(kù)
use newdb
=== 授權(quán)用戶(hù)
db.createUser({
user: "voyager",
pwd: "welcome1",
roles: [
{
role: "readWrite",
db: "newdb"
}
]
})
=== 插入測(cè)試數(shù)據(jù)
db.test.insert({"test":123})
=== 用戶(hù)權(quán)限
## 1媳搪、創(chuàng)建管理員用戶(hù)
use admin
// 管理員用戶(hù) root 角色
db.createUser({
user: "root",
pwd: "root",
roles: [{
role: 'root',
db: 'admin'
}]
})
// 管理員用戶(hù) userAdminAnyDatabase 角色
db.createUser({
user: "root",
pwd: "root",
roles: [
{
role: "userAdminAnyDatabase",
db: "admin"
}
]
})
## 2铭段、查看所有用戶(hù)
db.system.users.find().pretty()
## 3、創(chuàng)建普通用戶(hù)
// 普通用戶(hù) 角色 讀寫(xiě)用戶(hù)
db.createUser({
user: "voyager",
pwd: "welcome1",
roles: [
{
role: "readWrite",
db: "guilin_puhui"
}
]
})
## 4秦爆、授權(quán)登錄root
use admin
db.auth('root','root')
## 5序愚、普通用戶(hù)
use lyj
db.createUser({
user: "lyj",
pwd: "lyj",
roles: [{
role: 'readWrite',
db: 'lyj'
}]
})
db.auth('lyj','lyj')
## 6、查看所有用戶(hù)
db.system.users.find().pretty()
## 7等限、修改用戶(hù)密碼
db.changeUserPassword('lyj','lyj')
## 8爸吮、刪除用戶(hù)
db.system.users.remove({user:"用戶(hù)名"})
db.system.users.remove({_id:"用戶(hù)id"})
## 9、遠(yuǎn)程連接
mongo IP:端口/庫(kù)名 -u 用戶(hù)名 -p 密碼
-- (帶數(shù)據(jù)庫(kù) 用戶(hù) 密碼)
mongo 127.0.0.1:27017/lyj -u lyj -p lyj
-- (帶數(shù)據(jù)庫(kù))
mongo 127.0.0.1:27017/lyj
## 10望门、數(shù)據(jù)庫(kù)創(chuàng)建授權(quán)流程
// 登錄 admin 數(shù)據(jù)庫(kù)
use admin
// 管理員授權(quán)
db.auth('root','root')
// 登錄 新數(shù)據(jù)庫(kù)
use 新的數(shù)據(jù)庫(kù)名
// 創(chuàng)建 普通用戶(hù) 授權(quán)讀寫(xiě)角色 賦予數(shù)據(jù)庫(kù)
db.createUser({
user:"lyj",
pwd:"lyj",
roles:[
{
role:"readWrite",
db:"新的數(shù)據(jù)庫(kù)名"
}
]
})
// 授權(quán)普通用戶(hù)
db.auth('lyj','lyj')
// 測(cè)試插入數(shù)據(jù)
db.test.insert({'test':1234})
=== 導(dǎo)入形娇、導(dǎo)出 ===
導(dǎo)出 全量
mongodump -h dbhost -d dbname -o dbdirectory
參數(shù)說(shuō)明:
-h: mongodb所在服務(wù)器地址,例如:127.0.0.1 , 當(dāng)然也可以指定端口號(hào)127.0.0.1:27017
-d: 需要備份的數(shù)據(jù)庫(kù)實(shí)例,例如:test
-o: 備份的數(shù)據(jù)存放位置筹误,例如:C:\home\mongodb,該目錄需要提前建立
導(dǎo)入 全量
mongorestore -h dbhost -d dbname dbdirectory
/*
參數(shù)說(shuō)明:
-h: mongodb所在服務(wù)器地址,例如:127.0.0.1 , 當(dāng)然也可以指定端口號(hào)127.0.0.1:27017
-d: 需要恢復(fù)的數(shù)據(jù)庫(kù)實(shí)例桐早,例如:test
-drop: 恢復(fù)的時(shí)候先刪除當(dāng)前數(shù)據(jù),然后恢復(fù)備份的數(shù)據(jù)。就是說(shuō)哄酝,恢復(fù)后友存,備份后添加修改的 數(shù)據(jù)都會(huì)被刪除,慎用
*/
//導(dǎo)出
mongodump -h dbhost -d dbname -u user -p password -o dbdirectory
//導(dǎo)入
mongorestore -h dbhost -d dbname -c order --dir d:\home -u user -p password
// 例子
mongoimport -u lyj -p lyj --collection test0601 --db lyj --file E:\mongodata\test0601.json
mongoimport -u lyj -p lyj --collection error0601 --db lyj --file E:\mongodata\error0601.json
mongoimport -u lyj -p lyj --collection paopi0601 --db lyj --file E:\mongodata\paopi0601.json
單表 操作
指定表
--host :要導(dǎo)出數(shù)據(jù)庫(kù) ip
--port :要導(dǎo)出的實(shí)例節(jié)點(diǎn)端口號(hào)
--username :數(shù)據(jù)庫(kù)用戶(hù)名
--password :數(shù)據(jù)庫(kù)用戶(hù)密碼
--collection :要導(dǎo)出的表名
--db :要導(dǎo)出的表所在數(shù)據(jù)庫(kù)名
--out :要導(dǎo)出的文件路徑(默認(rèn)為當(dāng)前文件夾)
mongoexport --collection ai_session_conversa --db ai_xbot --out ai_session_conversa.json
mongoexport --collection ai_session_message --db ai_xbot --out ai_session_message.json
--host :要導(dǎo)入的數(shù)據(jù)庫(kù) ip
--port :要導(dǎo)入的實(shí)例節(jié)點(diǎn)端口號(hào)
--username :數(shù)據(jù)庫(kù)用戶(hù)名
--password :數(shù)據(jù)庫(kù)用戶(hù)密碼
--collection :要導(dǎo)入的表名
--db :要導(dǎo)入的表所在數(shù)據(jù)庫(kù)名
--file :要導(dǎo)入的源文件路徑(默認(rèn)為當(dāng)前文件夾)
mongoimport --collection ai_session_conversa --db ai_xbot --file ai_session_conversa.json
單表導(dǎo)出
mongoexport -u lyj -p lyj --collection digital_control_index_data --db lyj --out E:\mongodata\digital_control_index_data.json
單表導(dǎo)入
mongoimport -u lyj -p lyj --collection digital_control_index_data1 --db lyj --file E:\mongodata\digital_control_index_data.json
=== mongo 語(yǔ)法 end ===
== bat 語(yǔ)法 ==
=== echo :顯示命令后的字符
echo 你好
=== pause : 用于暫停陶衅,用戶(hù)輸入任意鍵關(guān)閉
pause
=== echo off :命令后所有命令不顯示本身屡立,但是會(huì)顯示echo off 與@ 配合使用 則都不顯示
@echo off
echo 你好啊
=== rem :注釋
rem 我是一個(gè)注釋
=== :: : 也是注釋
:: 這也是一個(gè)注釋
=== % :參數(shù)標(biāo)識(shí) %0 命令本身,之后的為參數(shù) %1 %2 ... %9
type %1
type %2
E:\test a.txt b.txt
注:test是我們寫(xiě)入內(nèi)容的bat文件搀军,a.txt和b.txt分別是當(dāng)前目錄下的兩個(gè)txt侠驯,內(nèi)容分別為“我是a”和“我是b”。
=== 非for語(yǔ)句 引用變量 等號(hào)兩邊不能加空格奕巍,會(huì)導(dǎo)致echo處于關(guān)閉狀態(tài)
set a=你好
echo %a%
=== for語(yǔ)句要用 '%%'
for %%i in (1 2 3 4 5) do echo %%i
=== call :調(diào)用另一個(gè)bat 文件
@echo off
echo 調(diào)用另一個(gè)bat文件:
call another
pause
=== if 用于判斷吟策, 字符串判斷,數(shù)值判斷的止,文件判斷檩坚,判斷是否賦值,
EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
if not "%1" == "a" (echo 參數(shù)不是 a) else (echo 參數(shù)是a)
if exist e:\b.txt (echo e盤(pán)下有b.txt) else (echo e盤(pán)下沒(méi)有b.txt)
set nihao=nihaoaaa
if defined nihao (echo 遍歷nihao的值為:%nihao%) else (echo 變量沒(méi)有被賦值)
xcopy e:\b.txt f:\
if errorlevel 1 echo 文件拷貝失敗
if errorlevel 0 echo 文件拷貝成功
幾個(gè)常用命令的返回值及其代表的意義:
diskcomp
0 盤(pán)比較相同
1 盤(pán)比較不同
2 用戶(hù)通過(guò)ctrl-c中止比較操作
3 由于致命的錯(cuò)誤使比較操作中止
4 預(yù)置錯(cuò)誤中止比較
diskcopy
0 盤(pán)拷貝操作成功
1 非致命盤(pán)讀/寫(xiě)錯(cuò)
2 用戶(hù)通過(guò)ctrl-c結(jié)束拷貝操作
3 因致命的處理錯(cuò)誤使盤(pán)拷貝中止
4 預(yù)置錯(cuò)誤阻止拷貝操作
format
0 格式化成功
3 用戶(hù)通過(guò)ctrl-c中止格式化處理
4 因致命的處理錯(cuò)誤使格式化中止
5 在提示"proceed with format(y/n)?"下用戶(hù)鍵入n結(jié)束
xcopy
0 成功拷貝文件
1 未找到拷貝文件
2 用戶(hù)通過(guò)ctrl-c中止拷貝操作
4 預(yù)置錯(cuò)誤阻止文件拷貝操作
5 拷貝過(guò)程中寫(xiě)盤(pán)錯(cuò)誤
=== goto :調(diào)到指定的標(biāo)簽位置
goto end
echo 這里能顯示嗎
:end
echo 這是end標(biāo)簽后的輸出
=== for 循環(huán)
:: /f 解析文件內(nèi)容
for /f %%i in (歌曲列表.txt) do echo %%i
:: delims 分隔符使用诅福,只會(huì)保留分隔符之前的內(nèi)容匾委。
for /f "delims=-" %%i in (歌曲列表.txt) do echo %%i
rem 顯示所有 .txt 后綴的文件名
for %%i in (*.txt) do echo %%i
rem tokens 選定分割之后的內(nèi)容。
for /f "tokens=1,2 delims=氓润、." %%i in (歌曲列表.txt) do echo %%i %%j
tokens=有時(shí)表示提取全部赂乐。
tokens=m表示提取第m列。
tokens=m,n表示提取第m列和第n列咖气。
tokens=m-n表示提取第m列至第n列踱讨。
Tokens=*表示刪除每行前面的空格桅打。忽略行首的所有空格晚缩。
tokens=m*提取第m列以后的所有字符溢谤,星號(hào)表示剩余的字符。
tokens=m,*提取第m列以后的所有字符伶唯,星號(hào)表示剩余的字符觉既。
“%%i %%j”對(duì)應(yīng)于“token”后面的列數(shù)。有多少列就要有多少個(gè)輸出變量乳幸,并且各變量中的字母存在先后順序瞪讼。
=== pip 常用命令 ===
1、導(dǎo)出依賴(lài)txt文件
pip37 freeze > packages.txt
2粹断、根據(jù)依賴(lài)txt文件下載包
pip37 download -r packages1.txt -d packages
3符欠、導(dǎo)入到離線環(huán)境
pip install --no-index --find-links=packages -r packages.txt
根據(jù)packages.txt 下載離線包
1、導(dǎo)出依賴(lài)txt文件
pip freeze > packages.txt
2姿染、根據(jù)依賴(lài)txt文件下載包
pip download -r packages.txt -d packages
3背亥、導(dǎo)入到離線環(huán)境
pip install --no-index --find-links=packages -r packages.txt
pip37 download -r packages.txt -d packages
pip download -r packages.txt -d packages
根據(jù)packages.txt 導(dǎo)入離線包
pip37 install --no-index --find-links=packages -r packages.txt
=== pip 常用命令 end ===
=== 常用正則 ==
1. 匹配整數(shù):^[0-9]+$
2. 匹配浮點(diǎn)數(shù):^[0-9]+\.[0-9]+$
3. 匹配手機(jī)號(hào)碼(簡(jiǎn)化版):^\d{11}$
4. 匹配郵政編碼:^\d{6}$
5. 匹配用戶(hù)名(包含字母、數(shù)字和下劃線悬赏,長(zhǎng)度為 4-16):^[a-zA-Z0-9_]{4,16}$
6. 匹配密碼(包含字母狡汉、數(shù)字和下劃線,長(zhǎng)度為 6-16):^[a-zA-Z0-9_]{6,16}$
7. 匹配 IP 地址:^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$
8. 匹配 URL:^(http|https): \/\/[^\s/$.?#].[^\s]*$
9. 匹配日期(YYYY-MM-DD):^\d{4}-\d{2}-\d{2}$
10. 匹配電子郵件地址:^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$
11. 匹配 HTML 標(biāo)簽:^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$
12. 匹配 HTML 屬性:^[a-zA-Z0-9_-] += [\"\']{0,1}([^\"\'>]+)[\"\']{0,1}$
13. 匹配 HTML 注釋?zhuān)?lt;!--(.*?)-->
14. 匹配整數(shù)(不包含負(fù)數(shù)):^[1-9]\d*$
15. 匹配非零整數(shù):^([1-9]\d*|0)$
16. 匹配正整數(shù):^[1-9]\d+$
17. 匹配非正整數(shù):^(0|[1-9]\d*)$
18. 匹配小數(shù)(包含整數(shù)部分):^[0-9]*\.[0-9]+$
19. 匹配有符號(hào)整數(shù)(正負(fù)均可):^-?[1-9]\d*$
20. 匹配有符號(hào)整數(shù)(正數(shù)或零):^[1-9]\d*|0$
21. 匹配有符號(hào)整數(shù)(負(fù)數(shù)):^-[1-9]\d*$
22. 匹配非零非負(fù)整數(shù):^(0|[1-9]\d*)$
23. 匹配非零非正整數(shù):^(0|[1-9]\d*|[0-9]-\d*)$
24. 匹配年月日完整格式(YYYY-MM-DD):^\d{4}-\d{2}-\d{2}$
25. 匹配中文漢字:[\u4e00-\u9fa5]闽颇、[\u3400-\u4db5]
26. 匹配中文字符:[\u4E00-\u9FA5]
27. 檢查是否含有中文字符:[^\x00-\xff]盾戴、[\uff00-\uffff]、[\ufeff-\ufffe]兵多、[\u3400-\u4db5][\u4e00-\u9fa5]*尖啡、[\u3400-\u4db5][\u4e00-\u9fa5][\u3400-\u4db5][\u4e00-\u9fa5]*...
28. 去除字符串中的中文字符及標(biāo)點(diǎn)符號(hào):[^[:punct:]]和[^[:chinese:]]...
29. 檢查是否含有非中文字符:[^\x00-\xff][\x21-\x7e]*、[^ -~]*剩膘、[^ -~]*...
30. 檢查是否含有英文及數(shù)字:[A-Za-z\d]*衅斩、[A-Za-z\d]*...
37. 檢查是否含有英文大寫(xiě):[A-Z]*、[A-Z]*...
44. 檢查是否含有英文小寫(xiě):[a-z]*怠褐、[a-z]*...
50. 檢查是否含有數(shù)字和大寫(xiě)字母:[A-Za-z\d]*畏梆、[A-Za-z\d]*...
以下是一些常用的正則表達(dá)式示例:
1. 匹配電子郵件地址:^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$
2. 匹配 URL:^(http|https):\/\/[^\s/$.?#].[^\s]*$
3. 匹配日期(YYYY-MM-DD):^\d{4}-\d{2}-\d{2}$
4. 匹配 IP 地址:^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$
5. 匹配整數(shù):^[0-9]+$
6. 匹配浮點(diǎn)數(shù):^[0-9]+\.[0-9]+$
7. 匹配手機(jī)號(hào)碼(簡(jiǎn)化版):^1[3-9]\d{9}$
8. 匹配郵政編碼:^[1-9]\d{5}$
9. 匹配用戶(hù)名(包含字母、數(shù)字奈懒、下劃線奠涌,長(zhǎng)度為 4-16):^[a-zA-Z0-9_]{4,16}$
10. 匹配密碼(包含字母、數(shù)字磷杏、特殊字符溜畅,長(zhǎng)度為 6-16):^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{6,16}$
11. 匹配 HTML 標(biāo)簽:^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$
12. 匹配國(guó)內(nèi)身份證號(hào)碼(18 位):^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2]\d|3[0-1])\d{3}(\d|X|x)$
13. 匹配國(guó)內(nèi)身份證號(hào)碼(15 位):^[1-9]\d{5}\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2]\d|3[0-1])\d{2}$
14. 匹配 QQ 號(hào)碼:^[1-9]\d{4,10}$
15. 匹配微博賬號(hào):^[a-zA-Z0-9_]{4,20}$
16. 匹配微信號(hào):^[a-zA-Z0-9_]{6,20}$
17. 匹配 UUID:^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$
18. 匹配 MAC 地址:^([a-fA-F0-9]{2}[:-]){5}([a-fA-F0-9]{2})$
19. 匹配 XML 格式:^<\?xml\s+version=[\'\"]\d+\.\d+[\'\"]\s*encoding=[\'\"]\w+[\'\"]\s*\?>.*<\/\w+>$
20. 匹配 JSON 格式:^{.*}$
21. 匹配 Base64 格式:^[A-Za-z0-9+/]{4}*(={0,2})$
22. 匹配 HTML 實(shí)體字符:^ |<|>|&|"|'|&#\d+;|&#x[\da-fA-F]+;$
23. 匹配 HTML 轉(zhuǎn)義字符:^ |<|>|&|"|'|&#\d+;|&#x[\da-fA-F]+;$
24. 匹配 HTML 轉(zhuǎn)義字符(簡(jiǎn)化版):&[lg]t;|&#\d+;|&#x[\da-fA-F]+;
25. 匹配 ASCII 字符:^[\x00-\x7F]+$
26. 匹配非 ASCII 字符:[^\x00-\x7F]+$
27. 匹配雙字節(jié)字符:[^\x00-\xff]+$
28. 匹配空白字符:^\s*$
29. 匹配非空白字符:^\S*$
30. 匹配漢字:^[\u4e00-\u9fa5]+$
31. 匹配非漢字:^[^\u4e00-\u9fa5]+$
32. 匹配中文標(biāo)點(diǎn)符號(hào):^[\u3002\uff1f\uff0c\uff1b\
好的,以下是繼續(xù)提供的正則表達(dá)式示例:
33. 匹配 URL 中的查詢(xún)參數(shù):^[a-zA-Z0-9_]+=[^&]*$
34. 匹配 HTML 中的標(biāo)簽名:^<[a-zA-Z0-9]+>$
35. 匹配 HTML 中的屬性名:^[a-zA-Z0-9_]+$
36. 匹配 HTML 中的屬性值:^[\'\"][^\'\"]*[\'\"]$
37. 匹配 HTML 中的注釋?zhuān)篰<!--.*-->$
38. 匹配 HTML 中的腳本標(biāo)簽:^<script.*?>.*?</script>$
39. 匹配 HTML 中的樣式標(biāo)簽:^<style.*?>.*?</style>$
40. 匹配 HTML 中的標(biāo)簽內(nèi)容:^<[^>]*>$
41. 匹配 HTML 中的文本內(nèi)容:^<[^>]*>$
42. 匹配 HTML 中的注釋內(nèi)容:^<!--[^>]*-->$
43. 匹配 HTML 中的腳本內(nèi)容:^<script[^>]*>[^>]*</script>$
44. 匹配 HTML 中的樣式內(nèi)容:^<style[^>]*>[^>]*</style>$
45. 匹配 HTML 中的標(biāo)簽屬性:^[a-zA-Z0-9_]+=[\'\"][^\'\"]*[\'\"]$
46. 匹配 HTML 中的事件處理程序:^on[a-zA-Z0-9]+$
47. 匹配 HTML 中的 CSS 類(lèi)名:^[\w-]+$
48. 匹配 HTML 中的 ID 名:^[\w-]+$
49. 匹配 HTML 中的 CSS 選擇器:^[\w-]+(\.[\w-]+)*(#[\w-]+)?(:\w+)?(\[[^\]]+\])?$
50. 匹配 HTML 中的 CSS 屬性名:^[a-zA-Z0-9-]+$
51. 匹配 HTML 中的 CSS 屬性值:^[\'\"][^\'\"]*[\'\"]$
52. 匹配 HTML 中的 CSS 顏色值:#?[\da-fA-F]{3,6}|[rgb]{1,3}\(\s*\d{1,3}\s*,\s*\d{1,3}\s*,\s*\d{1,3}\s*\)|[a-zA-Z]+
53. 匹配 HTML 中的 CSS 單位:^[a-zA-Z0-9-]+$
54. 匹配 HTML 中的 CSS 函數(shù)名:^[a-zA-Z0-9-]+$
55. 匹配 HTML 中的 CSS 函數(shù)參數(shù):^[^)]*$
56. 匹配 HTML 中的 CSS 選擇器分組符號(hào):^,|:|\(|\)|\[|\]|{|}|$
57. 匹配 HTML 中的 CSS 選擇器組合符號(hào):^&|\||\+|\>*$
=== vim 常用 ===
":d": 刪除當(dāng)前行极祸。
":d$": 刪除當(dāng)前行到文件末尾的所有內(nèi)容慈格。
":1,$d": 刪除從第一行到最后一行的所有內(nèi)容。