17: rsync同步操作 、 inotify实时同步 、 数据库服务基础 、 管理表数据 、 总结和答疑

本篇博客详细介绍了Linux系统中rsync命令的使用,包括基本同步、SSH远程同步以及结合inotifywait工具实现文件系统实时监控和同步。此外,还展示了如何搭建和配置MariaDB数据库,包括创建数据库、导入数据、用户权限管理以及执行SQL查询。案例覆盖了系统管理、数据同步和数据库操作等多个方面。
摘要由CSDN通过智能技术生成
Top

NSD SERVICES DAY06

  1. 案例1:rsync基本用法
  2. 案例2:rsync+SSH同步
  3. 案例3:使用inotifywait工具
  4. 案例4:配置Web镜像同步
  5. 案例5:搭建mariadb数据库系统
  6. 案例6:配置一个数据库
  7. 案例7:使用数据库查询

1 案例1:rsync基本用法

1.1 问题

本例要求掌握远程同步的基本操作,使用rsync命令完成下列任务:

  1. 将目录 /boot 同步到目录 /todir 下
  2. 将目录 /boot 下的文档同步到目录 /todir 下
  3. 在目录 /boot 下新增文件 a.txt,删除 /todir 下的子目录 grub2,再次同步使 /todir 与 /boot 一致
  4. 验证 -a、-n、-v、--delete 选项的含义

1.2 方案

本地同步操作:

  • rsync [选项...] 本地目录1 本地目录2
  • rsync [选项...] 本地目录1/ 本地目录2

rsync同步工具的常用选项:

  • -n:测试同步过程,不做实际修改
  • --delete:删除目标文件夹内多余的文档
  • -a:归档模式,相当于-rlptgoD
  • -v:显示详细操作信息
  • -z:传输过程中启用压缩/解压

1.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:rsync同步基本操作

1)将目录 /boot 同步到目录 /todir 下

[root@svr7 ~]# ls  -l  /todir  				//同步前
ls: 无法访问/todir: 没有那个文件或目录
[root@svr7 ~]# rsync  -a  /boot  /todir  		//将目录1作为目录2的子目录
[root@svr7 ~]# ls  -l  /todir  				//检查同步结果
总用量 4
dr-xr-xr-x. 4 root root 4096 11月 30 18:50 boot

2)将目录 /boot 下的文档同步到目录 /todir 下

[root@svr7 ~]# rm  -rf  /todir  				//清理掉目录2
[root@svr7 ~]# rsync  -a  /boot/  /todir  		//将目录1下的文档同步到目录2下
[root@svr7 ~]# ls  -l  /todir  				//检查同步结果
总用量 126708
-rw-r--r--. 1 root root   126426 10月 30 2015 config-3.10.0-327.el7.x86_64
drwxr-xr-x. 2 root root     4096 11月 30 18:50 extlinux
drwx------. 6 root root      104 12月  9 09:58 grub2
.. ..

3)同步效果测试

在目录/boot下新增文件a.txt,删除/todir下的子目录 grub2:

[root@svr7 ~]# touch  /boot/a.txt
[root@svr7 ~]# rm  -rf  /todir/grub2/ 

现在目录/boot和/todir目录下的内容已经不一致了:

[root@svr7 ~]# ls  -ld  /boot/a.txt  /todir/a.txt
ls: 无法访问/todir/a.txt: 没有那个文件或目录
-rw-r--r--. 1 root root 0 1月  11 21:09 /boot/a.txt
[root@svr7 ~]# ls  -ld  /boot/grub2  /todir/grub2
ls: 无法访问/todir/grub2: 没有那个文件或目录
drwx------. 6 root root 104 12月  9 09:58 /boot/grub2

再次同步使/todir与/boot一致:

[root@svr7 ~]# rsync  -a  /boot/  /todir/

确认同步结果:

[root@svr7 ~]# ls  -ld  /boot/a.txt  /todir/a.txt
-rw-r--r--. 1 root root 0 1月  11 21:09 /boot/a.txt
-rw-r--r--. 1 root root 0 1月  11 21:09 /todir/a.txt
[root@svr7 ~]# ls  -ld  /boot/grub2  /todir/grub2
drwx------. 6 root root 104 12月  9 09:58 /boot/grub2
drwx------. 6 root root 104 12月  9 09:58 /todir/grub2

步骤二:验证 -a、-v、-n、--delete 选项的含义

1)验证-a选项

当目录1包含文件夹时,若缺少-a或-r选项则文件夹会被忽略:

[root@svr7 ~]# rsync  /home  /testa
skipping directory home
[root@svr7 ~]# ls  -ld  /testa
ls: 无法访问/testa: 没有那个文件或目录

添加-a后才会执行同步:

[root@svr7 ~]# rsync  -a  /home/  /testa
[root@svr7 ~]# ls  -ld  /testa
drwxr-xr-x. 4 root root 31 1月   6 17:33 /testa

类似的情况,当目录1中的数据出现权限、归属、修改时间等变化时,若文件内容不变默认不会同步,若希望目录2也同步这些变化,也需要-a选项。

2)验证-v选项

创建测试目录及文档:

[root@svr7 ~]# mkdir  /fdir
[root@svr7 ~]# touch  /fdir/1.txt

添加-v选项时,可以看到操作细节信息,比如第一次同步时:

[root@svr7 ~]# rsync  -av  /fdir/  /tdir
sending incremental file list
created directory /tdir
./
1.txt 								//传输文档列表

sent 82 bytes received 34 bytes 232.00 bytes/sec
total size is 0 speedup is 0.00

在目录/fdir/添加文件2.txt,再次跟踪同步信息:


[root@svr7 ~]# touch  /fdir/2.txt
sending incremental file list
./
2.txt //传输文档列表

sent 100 bytes received 34 bytes 268.00 bytes/sec
total size is 0 speedup is 0.00

确认目录1和目录2的内容已经一致:


[root@svr7 ~]# ls  /fdir/  /tdir/
/fdir/:
1.txt 2.txt

/tdir/:
1.txt 2.txt

再次跟踪同步信息,已经无需传输文件:


[root@svr7 ~]# rsync  -av  /fdir/  /tdir
sending incremental file list

sent 58 bytes received 12 bytes 140.00 bytes/sec
total size is 0 speedup is 0.00

3)验证-n选项


将-n、-v选项合用,可以模拟同步过程,显示需要做哪些操作(但并不真的同步)。


在目录/fdir下新建文件3.txt,测试同步操作:


[root@svr7 ~]# touch  /fdir/3.txt
[root@svr7 ~]# rsync -avn /fdir/ /tdir/
sending incremental file list
./
3.txt //提示同步时会传输哪些文件

sent 78 bytes received 18 bytes 192.00 bytes/sec
total size is 0 speedup is 0.00 (DRY RUN)
[root@svr7 ~]# ls -l /tdir/3.txt //但实际并未真的同步
ls: 无法访问/tdir/3.txt: 没有那个文件或目录

去掉-n选项才会真正同步:


[root@svr7 ~]# rsync  -av  /fdir/  /tdir/
sending incremental file list
./
3.txt

sent 114 bytes received 34 bytes 296.00 bytes/sec
total size is 0 speedup is 0.00
[root@svr7 ~]# ls -l /tdir/3.txt
-rw-r–r--. 1 root root 0 1月 11 21:46 /tdir/3.txt

4)验证–delete选项


rsync同步操作默认只是将目录1的数据同步到目录2,但如果目录2存在多余的文件却并不会去除,除非添加—delete选项。


在目录/fdir、/tdir已经完成同步后,删除/tdir/2.txt文件,再次同步:


[root@svr7 ~]# rm  -rf  /fdir/2.txt
[root@svr7 ~]# rsync -a /fdir/ /tdir/

检查发现目标文件夹/tdir下的2.txt文件还在:


[root@svr7 ~]# ls  /fdir/  /tdir/
/fdir/:
1.txt 3.txt

/tdir/:
1.txt 2.txt 3.txt

这种情况下添加–delete选项再次执行同步,两个目录的内容就一致了:


[root@svr7 ~]# rsync  -a  --delete  /fdir/  /tdir/
[root@svr7 ~]# ls /fdir/ /tdir/
/fdir/:
1.txt 3.txt

/tdir/:
1.txt 3.txt



2 案例2:rsync+SSH同步


2.1 问题


本例要求掌握rsync与远程SSH资源的同步操作,使用rsync命令访问远程主机svr7,完成下列任务:



  1. 查看远程主机的 / 目录下有哪些子目录
  • 从远程主机下载 /etc/passwd 文件到当前目录
  • 将远程主机的 /boot/ 目录同步为本地的 /fromssh
  • 将本机的 /etc 目录同步到远程主机的 /opt/下
  • 2.2 方案

    列出 SSH 服务端资源

    • rsync user@host:远程目录/

    rsync+SSH远程同步操作:

    • rsync [...] user@host:远程目录 本地目录
    • rsync [...] 本地目录 user@host:远程目录

    2.3 步骤

    实现此案例需要按照如下步骤进行。

    步骤一:列出远程主机的SSH资源

    查看远程主机svr7的/目录下有哪些子目录:

    [root@pc207 ~]# rsync  root@192.168.4.7:/
    root@192.168.4.7's password:   						//验证对方的密码
    dr-xr-xr-x        4096 2016/12/15 10:39:34 .
    lrwxrwxrwx           7 2016/12/07 09:21:50 bin
    lrwxrwxrwx           7 2016/12/07 09:21:50 lib
    lrwxrwxrwx           9 2016/12/07 09:21:50 lib64
    lrwxrwxrwx           8 2016/12/07 09:21:50 sbin
    dr-xr-xr-x        4096 2016/12/07 11:25:29 boot
    drwxr-xr-x           6 2016/12/07 09:21:14 data
    drwxr-xr-x        3200 2016/12/15 10:46:15 dev
    drwxr-xr-x        8192 2016/12/20 17:01:02 etc
    

    步骤二:rsync+SSH同步操作

    1)从远程主机svr7下载/etc/passwd文件到当前目录

    [root@pc207 ~]# rsync  root@192.168.4.7:/etc/passwd  ./
    root@192.168.4.7's password:   						//验证对方的密码
    [root@pc207 ~]# cat  passwd 							//检查同步结果
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    .. ..
    

    2)将远程主机svr7的/boot/目录同步为本地的/fromssh

    [root@pc207 ~]# rsync  -a  root@192.168.4.7:/boot/  /fromssh
    root@192.168.4.7's password:   						//验证对方的密码
    [root@pc207 ~]# ls  /fromssh/ 							//检查同步结果
    config-3.10.0-327.el7.x86_64
    extlinux
    grub2
    initramfs-0-rescue-a19921505cc7e19d20dfcd5cea7d8aa2.img
    initramfs-3.10.0-327.el7.x86_64.img
    initramfs-3.10.0-327.el7.x86_64kdump.img
    .. ..
    

    3)将本机的/etc目录同步到远程主机svr7的/opt/下

    确认目录大小:

    [root@pc207 ~]# du  -sh  /etc
    35M	/etc
    

    上行同步到远程主机svr7上:

    [root@pc207 ~]# rsync  -a  /etc  root@192.168.4.7:/opt/
    root@192.168.4.7's password:
    

    在远程主机上检查同步结果:

    [root@svr7 ~]# du  -sh  /opt/etc
    35M	/opt/etc
    

    3 案例3:使用inotifywait工具

    3.1 问题

    本例要求安装inotify-tools工具,并针对文件夹 /opt 启用 inotifywait 监控,完成下列任务:

    1. 当此目录下出现新建、修改、更改权限、删除文件等事件时能给出提示
    2. 验证上述监控事件的效果

    3.2 方案

    inotifywait监控操作:

    • inotifywait [选项] 目标文件夹

    inotifywait常用命令选项:

    • -m,持续监控(捕获一个事件后不退出)
    • -r,递归监控、包括子目录及文件
    • -q,减少屏幕输出信息
    • -e,指定监视的 modify、move、create、delete、attrib 等事件类别

    3.3 步骤

    实现此案例需要按照如下步骤进行。

    步骤一:安装inotify-tools软件包

    1)解包

    [root@svr7 ~]# tar  xf  inotify-tools-3.13.tar.gz  -C  /usr/src/
    

    2)配置

    [root@svr7 ~]# cd  /usr/src/inotify-tools-3.13/
    [root@svr7 inotify-tools-3.13]# ./configure
    

    3)编译

    [root@svr7 inotify-tools-3.13]# make
    

    4)安装

    [root@svr7 inotify-tools-3.13]# make
    

    5)检查安装结果(inotifywait程序可用)

    [root@svr7 ~]# inotifywait --help
    inotifywait 3.13
    Wait for a particular event on a file or set of files.
    Usage: inotifywait [ options ] file1 [ file2 ] [ file3 ] [ ... ]
    Options:
    	-h|--help     	Show this help text.
    .. ..
    

    步骤二:测试inotifywait监控

    1)开启监控任务,置入后台

    [root@svr7 ~]# inotifywait  -mrq  -e  create,modify,move,attrib,delete /opt &
    [1] 55564
    

    2)测试/opt/目录下的新建、修改、改名、更改权限、删除文件等事件的响应消息

    观察新建文件时的监控信息:

    [root@svr7 ~]# touch  /opt/a.txt
    /opt/ CREATE a.txt
    /opt/ ATTRIB a.txt
    

    观察修改文件内容时的监控信息:

    [root@svr7 ~]# echo  Hello  >  /opt/a.txt
    [root@svr7 ~]# /opt/ MODIFY a.txt
    /opt/ MODIFY a.txt
    

    观察将文件改名时的监控信息:

    [root@svr7 ~]# mv  /opt/a.txt  /opt/b.txt
    /opt/ MOVED_FROM a.txt
    /opt/ MOVED_TO b.txt
    

    观察修改文件权限时的监控信息:

    [root@svr7 ~]# chmod  600  /opt/b.txt
    /opt/ ATTRIB b.txt
    

    观察删除文件时的监控信息:

    [root@svr7 ~]# rm  -rf  /opt/b.txt 
    /opt/ DELETE b.txt
    

    3)停止监控任务

    [root@svr7 ~]# kill  -9  %1
    [1]+  已杀死          inotifywait -mr -e create,modify,move,attrib,delete /opt
    

    4 案例4:配置Web镜像同步

    4.1 问题

    本例要求为两台Web服务器svr7、pc207的网页文档目录配置镜像同步,主要基于inotifywait监控技术实现实时触发操作,需要完成下列任务:

    1. 以 svr7 为发起方,原始目录为 /var/www/html/
    2. 以 pc207 为同步目标,基于SSH免密验证
    3. 编写 inotify+rsync 同步脚本,验证实时同步效果

    4.2 方案

    inotifywait与rsync的结合,主要思路:

    while  inotifywait监控操作
    do
            需要执行的rsync同步操作
    done
    

    4.3 步骤

    实现此案例需要按照如下步骤进行。

    步骤一:为主机svr7、pc207部署同步目录

    双方的目录均为/var/www/html/,如果安装了httpd,此目录会自动出现。

    1)确认svr7的目录内容

    [root@svr7 ~]# yum  -y  install  httpd
    .. ..
    [root@svr7 ~]# ls  /var/www/html/ 					//向目录下提供一些测试文件
    libreoffice
    

    2)确认pc207的目录内容

    [root@pc207 ~]# yum  -y  install  httpd
    .. ..
    [root@pc207 ~]# ls   /var/www/html 				//初始目录无数据
    [root@pc207 ~]# 
    

    步骤二:为svr7配置到pc207的SSH密钥对验证,实现免密码交互

    1)检查当前用户是否已经有可用的SSH密钥对文件

    [root@svr7 ~]# ls  ~/.ssh/id_*
    /root/.ssh/id_rsa  /root/.ssh/id_rsa.pub
    

    如果找不到id_rsa、id_rsa.pub密钥对文件,则需要执行下列操作创建:

    [root@svr7 ~]# ssh-keygen 
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa):  	//按回车,确认存放位置
    Enter passphrase (empty for no passphrase):   	//按回车,确认不要密码
    Enter same passphrase again:  					//再次按回车,确认
    Your identification has been saved in /root/.ssh/id_rsa. 
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    00:a7:cb:2d:9d:b8:8a:df:f5:ff:5b:ed:bd:04:10:fe root@svr7
    The key's randomart image is:
    +--[ RSA 2048]----+
    |    . .    .     |
    |     +    . .    |
    |    . .    o     |
    |   . = o    o    |
    |    = + S    E   |
    |     o        .. |
    |    . .       ...|
    | . o . .     ....|
    |..o .   ....o. .+|
    +-----------------+
    

    2)将当前用户的SSH公钥部署到远程主机

    [root@svr7 ~]# ssh-copy-id  root@192.168.4.207
    The authenticity of host '192.168.4.207 (192.168.4.207)' can't be established.
    ECDSA key fingerprint is d3:16:2c:9a:9d:91:28:c8:74:9c:af:2d:04:82:c9:66.
    Are you sure you want to continue connecting (yes/no)? yes 		//首次连yes确认
    root@192.168.4.207's password:  					//验证对方的密码
    

    Number of key(s) added: 1

    Now try logging into the machine, with: “ssh ‘root@192.168.4.207’”
    and check to make sure that only the key(s) you wanted were added.

    3)验证免密码登录效果


    [root@svr7 ~]# ssh  root@192.168.4.207
    Last login: Fri Jan 13 09:52:08 2017 from 192.168.4.110
    [root@pc207 ~]# //确认已免密码连入远程主机
    [root@pc207 ~]# exit //退出SSH登录环境
    登出
    Connection to 192.168.4.207 closed.
    [root@svr7 ~]# //已反对原客户机

    步骤三:编写镜像同步脚本并测试效果


    1)编写脚本文件/root/isync.sh


    [root@svr7 ~]# vim  /root/isync.sh
    #!/bin/bash
    FROM_DIR="/var/www/html/"
    RSYNC_CMD=“rsync -az --delete $FROM_DIR root@192.168.4.207:/var/www/html”
    while inotifywait -rqq -e modify,move,create,delete,attrib $FROM_DIR
    do
    $RSYNC_CMD
    done &
    [root@svr7 ~]# chmod +x /root/isync.sh

    2)运行脚本


    [root@svr7 ~]# /root/isync.sh
    [root@svr7 ~]# pgrep -l inotify //确认任务在运行
    56494 inotifywait

    3)测试同步效果


    在svr7上向/var/www/html/目录下添加一个测试网页(触发同步):


    [root@svr7 ~]# touch  /var/www/html/a.txt
    [root@svr7 ~]# ls /var/www/html/
    a.txt libreoffice

    在pc207上检查/var/www/html/目录,内容应该已经与svr7上的同名目录一致:


    [root@pc207 ~]# ls   /var/www/html
    a.txt libreoffice

    4)结束测试后,在svr7上停止监控任务


    [root@svr7 ~]# pkill  -9  inotify
    [root@svr7 ~]# pgrep -l inotify //确认已没有监控任务
    [root@svr7 ~]#



    5 案例5:搭建mariadb数据库系统


    5.1 问题


    本例要求在虚拟机server0上安装 MariaDB 数据库系统:



    1. 安装 mariadb-server、mariadb 软件包
  • 启动 mariadb 服务,并确认监听状态
  • 然后在客户端访问此数据库服务:

    1. 使用 mysql 命令访问本机的数据库服务,用户名为 root,密码为空
    2. 执行 SHOW DATABASES; 指令列出有哪些库
    3. 退出 mysql 交互界面

    5.2 方案

    数据库表及相关软件的基本知识:

    • 数据(记录):用来表示一个事物(实体)的一些信息(属性)的文字/图片文件等,例如字符串“:tedu.cn”
    • 数据表:存放很多条数据记录的容器,例如学员联系信息表、学员月考成绩表
    • 数据表的每一行:存放一条记录
    • 数据表的每一列/字段:很多个事物的同一个属性
    • 数据库:存放很多个相互关联的表格的容器,例如NSD1609学员档案库
    • 数据库管理系统(DBMS):用来管理(创建库/添加/查询/删除/授权等)数据库信息的软件平台

    MariaDB服务端:软件包mariadb-server、系统服务mariadb

    MariaDB客户端:软件包mariadb、管理工具mysql

    MariaDB服务端配置文件:/etc/my.cnf

    传输协议及端口:TCP 3306

    mysql命令的简单用法:

    mysql  [-u用户名]  [-p[密码]] 
    

    5.3 步骤

    实现此案例需要按照如下步骤进行。

    步骤一:搭建MariaDB数据库服务器

    1)安装软件包mariadb-server、mariadb

    [root@server0 ~]# yum  -y  install  mariadb-server  mariadb
    .. ..
    

    2)启动系统服务mariadb,并设置开机自启

    [root@server0 ~]# systemctl  restart  mariadb
    [root@server0 ~]# systemctl  enable  mariadb
    ln -s '/usr/lib/systemd/system/mariadb.service' '/etc/systemd/system/multi-user.target.wants/mariadb.service'
    

    3)检查监听状态

    [root@server0 ~]# netstat  -antpu | grep  :3306
    tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      2922/mysqld   
    

    步骤二:访问本机的MariaDB数据库系统

    1)以用户root连接本机的mariadb(或mysqld)数据库服务

    [root@server0 ~]# mysql  -uroot
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MariaDB connection id is 3
    Server version: 5.5.35-MariaDB MariaDB Server
    

    Copyright © 2000, 2013, Oracle, Monty Program Ab and others.

    Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

    MariaDB [(none)]>

    2)查看当前数据库系统内有哪些库


    MariaDB [(none)]> SHOW DATABASES;
    ±-------------------+
    | Database |
    ±-------------------+
    | information_schema |
    | mysql |
    | performance_schema |
    | test |
    ±-------------------+
    4 rows in set (0.00 sec)

    3)退出操作环境


    MariaDB [(none)]> QUIT
    Bye
    [root@server0 ~]#



    6 案例6:配置一个数据库


    6.1 问题


    本例要求在虚拟机server0上部署 MariaDB 数据库,具体要求如下:



    1. 新建一个数据库名为 Contacts,其中应该包含来自数据库内容文件users.sql
  • 除了 root 用户,此数据库还能被用户 Raikon 查询,此用户的密码为atenorth
  • root用户的密码为 atenorth
  • 6.2 方案

    为数据库账号修改密码:

    mysqladmin  [-u用户名]  [-p[旧密码]]  password  '新密码'
    

    导入/恢复到数据库:

    mysql  [-u用户名]  [-p[密码]]  数据库名  <  备份文件.sql 
    

    为数据库用户授权/撤销权限:

    grant  权限1,权限2...  on  库名.表名  to  用户名@客户机地址  identified  by '密码';
    revoke 权限1,权限2... on  库名.表名  from  用户名@客户机地址;
    

    6.3 步骤

    实现此案例需要按照如下步骤进行。

    步骤一:配置数据库管理密码

    1)使用mysqladmin为用户root设置密码

    原管理账号root的密码为空,因此无需验证旧密码:

    [root@server0 ~]# mysqladmin  -u  root  password  'atenorth'
    

    2)验证新密码是否可用

    root使用空密码从本机连接将会失败:

    [root@server0 ~]# mysql  -uroot
    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
    

    必须指定正确的新密码才能连接成功:

    [root@server0 ~]# mysql  -uroot  -patenorth
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MariaDB connection id is 4
    Server version: 5.5.35-MariaDB MariaDB Server
    

    Copyright © 2000, 2013, Oracle, Monty Program Ab and others.

    Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

    … …

    步骤二:建Contacts库并导入备份数据


    1)创建新库Contacts,并退出操作环境


    MariaDB [(none)]> CREATE  DATABASE  Contacts;
    Query OK, 1 row affected (0.00 sec)

    MariaDB [(none)]> QUIT
    Bye

    2)导入数据库


    [root@server0 ~]# mysql  -uroot  -patenorth  Contacts  <  users.sql

    3)重新连入操作环境,确认导入结果


    [root@server0 ~]# mysql  -uroot  -patenorth
    … …
    MariaDB [(none)]> USE Contacts; //使用指定库
    Database changed

    MariaDB [Contacts]> SHOW TABLES; //列出有哪些表
    ±-------------------+
    | Tables_in_Contacts |
    ±-------------------+
    | base |
    | location |
    ±-------------------+
    2 rows in set (0.00 sec)

    步骤三:为Contacts库授权


    1)允许用户Raikon从本机访问,具有查询权限,密码为atenorth


    MariaDB [Contacts]> GRANT  select  ON  Contacts.*  TO  Raikon@localhost  IDENTIFIED BY  ‘atenorth’;
    Query OK, 0 rows affected (0.00 sec)

    2)退出操作环境


    MariaDB [Contacts]> QUIT
    Bye
    [root@server0 ~]#



    7 案例7:使用数据库查询


    7.1 问题


    本例要求配置MariaDB数据库,完成以下任务:



    1. 在系统server0上使用数据库Contacts,通过SQL查询回答下列问题:密码是solicitous的人的名字?

    7.2 方案

    表记录增删改查:

    insert  into  [库名.]表名  values(值1,值2,值3);
    delete  from  [库名.]表名  where ...;
    update  [库名.]表名  set  字段名=字段值  where ....;
    select  字段列表  from  [库名.]表名  where  字段名1=值  and|or  字段名2=值; 
    

    统计查询结果的数量:

    select  count(*)  from  [库名.]表名  where  .. ..;
    

    7.3 步骤

    实现此案例需要按照如下步骤进行。

    步骤一:按条件查询表记录

    1)按单个条件查询

    找出密码是solicitous的人的名字?

    MariaDB [(none)]> SELECT  name  FROM  Contacts.base  WHERE  Password='solicitous';
    +-------+
    | name  |
    +-------+
    | James |
    +-------+
    1 row in set (0.00 sec)
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值