百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程文章 > 正文

mysql系列之一文详解Navicat工具的使用(二)

qiyuwang 2024-10-09 17:40 89 浏览 0 评论


本章内容是系列内容的第二部分,主要介绍Navicat工具的使用 。若查看第一部分请见:mysql系列介绍之mysql服务端及客户端的安装(一)

客户端连接

使用Navicat连接数据库在上面已经介绍过 ,不再介绍。这里主要说明一种情况 ,即有时候连接后忘记了密码 ,该如何再次查看呢 ?我们可以通过如下操作进行解密数据库密码。

  1. 选中已连接的数据库名,
  2. 点击'文件'-'导出连接',将文件导出到某一路径下

3.将导出后的文件打开,找到password的值,在下面会用到这个值


4.转到https://tool.lu/coderunner/下,将如下代码拷贝到文本框内(注:全部替换) 。

<?php
namespace FatSmallTools;
class NavicatPassword
{
    protected $version = 0;
    protected $aesKey = 'libcckeylibcckey';
    protected $aesIv = 'libcciv libcciv ';
    protected $blowString = '3DC5CA39';
    protected $blowKey = null;
    protected $blowIv = null;
    public function __construct($version = 12)
    {
        $this->version = $version;
        $this->blowKey = sha1('3DC5CA39', true);
        $this->blowIv = hex2bin('d9c7c3c8870d64bd');
    }
    public function encrypt($string)
    {
        $result = FALSE;
        switch ($this->version) {
            case 11:
                $result = $this->encryptEleven($string);
                break;
            case 12:
                $result = $this->encryptTwelve($string);
                break;
            default:
                break;
        }
        return $result;
    }
    protected function encryptEleven($string)
    {
        $round = intval(floor(strlen($string) / 8));
        $leftLength = strlen($string) % 8;
        $result = '';
        $currentVector = $this->blowIv;
        for ($i = 0; $i < $round; $i++) {
            $temp = $this->encryptBlock($this->xorBytes(substr($string, 8 * $i, 8), $currentVector));
            $currentVector = $this->xorBytes($currentVector, $temp);
            $result .= $temp;
        }
        if ($leftLength) {
            $currentVector = $this->encryptBlock($currentVector);
            $result .= $this->xorBytes(substr($string, 8 * $i, $leftLength), $currentVector);
        }

        return strtoupper(bin2hex($result));

    }

    protected function encryptBlock($block)
    {
        return openssl_encrypt($block, 'BF-ECB', $this->blowKey, OPENSSL_RAW_DATA|OPENSSL_NO_PADDING); 
    }

    protected function decryptBlock($block)
    {
        return openssl_decrypt($block, 'BF-ECB', $this->blowKey, OPENSSL_RAW_DATA|OPENSSL_NO_PADDING); 
    }

    protected function xorBytes($str1, $str2)
    {
        $result = '';
        for ($i = 0; $i < strlen($str1); $i++) {
            $result .= chr(ord($str1[$i]) ^ ord($str2[$i]));
        }
        return $result;
    }

    protected function encryptTwelve($string)
    {
        $result = openssl_encrypt($string, 'AES-128-CBC', $this->aesKey, OPENSSL_RAW_DATA, $this->aesIv);
        return strtoupper(bin2hex($result));
    }
    
    public function decrypt($string)
    {
        $result = FALSE;
        switch ($this->version) {
            case 11:
                $result = $this->decryptEleven($string);
                break;
            case 12:
                $result = $this->decryptTwelve($string);
                break;
            default:
                break;
        }
        return $result;
    }
    
    protected function decryptEleven($upperString)
    {
        $string = hex2bin(strtolower($upperString));
        $round = intval(floor(strlen($string) / 8));
        $leftLength = strlen($string) % 8;
        $result = '';
        $currentVector = $this->blowIv;
        for ($i = 0; $i < $round; $i++) {
            $encryptedBlock = substr($string, 8 * $i, 8);
            $temp = $this->xorBytes($this->decryptBlock($encryptedBlock), $currentVector);
            $currentVector = $this->xorBytes($currentVector, $encryptedBlock);
            $result .= $temp;
        }
        if ($leftLength) {
            $currentVector = $this->encryptBlock($currentVector);
            $result .= $this->xorBytes(substr($string, 8 * $i, $leftLength), $currentVector);
        }
        return $result;
    }

 

    protected function decryptTwelve($upperString)
    {
        $string = hex2bin(strtolower($upperString));
        return openssl_decrypt($string, 'AES-128-CBC', $this->aesKey, OPENSSL_RAW_DATA, $this->aesIv);
    }
}


use FatSmallTools\NavicatPassword;
 
//需要指定版本,11或12

//$navicatPassword = new NavicatPassword(12);

$navicatPassword = new NavicatPassword(11);


//解密
$decode = $navicatPassword->decrypt('15057D7BA390');
echo $decode."\n";

5.然后将password的值复制到倒数第二行,点击运行 。具体如下:

6.执行后,右侧的文本框就会显示解密后的密码 。

数据库操作

创建库创建

  1. 右击数据库,点击新建数据库。

2.在弹出的窗口中输入数据库名,字符集和排序规则,点击确定 。其中:

  • 数据库名 :自己定义
  • 字符集:utf-8(倒数第二个)
  • 排序规则:utf8_general_ci

创建库删除

选中其中一个数据库右击,点击数据库删除即可 。

数据库连接

  • 连接 :在Navicat中双击后就连接上该数据库,同时图标也变为绿色的了 。
  • 关闭 :右击该数据库,点击数据库关闭 ,数据库就断开连接 ,颜色变为灰色 。


表的操作

表创建

  1. 选择其中一个已连接上的数据库,点击表,新建表。

2.输入表的列名 ,类型,长度等,直到所有列都创建成功。

3.点击保存,给表起个名字 。表创建成功


其它操作

右击该表,弹出一个列表,该列表中有很多功能可操作,接下来我们重点介绍常用几种操作

  • 打开表 :打开表时加载BLOB字段(图片)
  • 打开表(快速) :BLOB字段(图片)将不会被加载直至你点击该单元格
  • 新建表 : 新建一张表
  • 设计表 : 可以进行修改表字段或查看该表有哪些字典
  • 删除表 :将表及数据全部删除
  • 清空表 :清除全部数据但不重置自动增长递增值 ,自动递增值可以从表列表查看 。
  • 截断表 :清除全部数据且重置自动增长值 。
  • 复制表 :可以复制一张表结构相同的表
  • 设置权限 : 可以给表设置各种操作权限,如select ,insert ,update ,delete,drop
  • 导入/导出向导 : 在下面介绍
  • 转储SQL文件 : 在下面介绍

查询表信息

有时候写SQL的时候,我们需要查看是那个表? 或者是那个表中的那个字段 ? 或者是通过数据查询在那张表 ?那么接下来我们就来介绍如下这三张方式 :

  • 添加/查询表注释
  • 添加/查询字段注释
  • 通过数据查询在那张表

添加/查询表注释

操作步骤 :

  1. 选择一张表 ,右击点击设计表 。

2.在注释一列添加表的备注信息 ,备注表名 ,点击保存。

3.选择查看,点击详细信息 ,然后就可以看到注释中的表名了 。

如果你所使用的业务表都有注释 ,那么通过此种方式就可以快速的找到对应的表,非常的方便 。

添加/查询字段注释

操作步骤:

  1. 选中其中一张表右击,点击设计表 。
  2. 选中其中的一个字段,然后在下面的注释中备注上字段的含义 .

3.继续通过设计表查看或者通过如下方式来查看(两种方式都可以)

通过数据查询在那张表

这个功能对测试来说 ,非常有用 。因为你在测试过程中可能会遇到业务操作的数据到底是写到哪张表了 ? 通过上面的方式又找不到 ,怎么办 ?那么就可以使用下面这个功能 ,具体操作步骤:

  1. 选择要查询的数据库 ,右击选择'在数据库中查找'。 会弹出下面的界面 。

2.在查询输入框中你要查询的数据 ,点击查找 。

数据操作

数据操作主要是指打开一张表后 ,然后对数据进行的操作 ,这里面的功能通过编写SQL也能实现 ,但是如果你在界面操作的话,会比写SQL更快一些 。

底角区

首先我们看下面区域的操作 ,具体如图所示 :

最下面的几个操作图标 ,其实这些图标如果你不理解的话,鼠标移到图标上都能看到中文含义 。


操作区

点击其中一个字段或者选中一条数据 右击 ,然后会出现如下的一些操作 :

  • 设置为空白字符串 : 将选中的字段设置空字符串
  • 设置为NULL : 将选中的字段设置为NULL
  • 复制 :复制选中列或整行的数据 ,这个功能可以和下面添加数据结合使用 ,如想插入一条数据 ,先复制一条数据,然后点击+插入进行修改即可。
  • 复制为 : 可以复制为insert或者update语句 ,当你想写一条插入/更新语句 ,若觉得太麻烦 ,直接选择这个选项 ,非常的方便 。
  • 保存数据为 :将字段数据保存到本地文件
  • 删除记录 : 删除该条记录
  • 排序 : 按照所选列进行排序
  • 筛选 :按照选中值进行筛选 ,相当于SQL语句加了where语句,如【where 选择列 操作符 选中值 】
  • 移除全部排除及筛选 : 移除筛选
  • 显示 :这个功能也比较有用 ,可以将某一列进行冻结(像Excel) ,也可以设置格式 ;可以设置行高和宽 ;还可以设置隐藏/显示某列 。
  • 刷新 : 刷新变更数据

以上的几个功能 ,其中比较常用到的就是复制数据 ,复制SQL语句 ,以及显示这几个功能 。

快速查询数据

当然也可以通过快捷键快速的查找某条数据 ,可以按Ctrl +F ,输入要查询的关键字 ,就会搜索出你想要的数据 。

数据备份

此部分主要介绍将数据库表中的的数据/表/库通过各种方式,如导出向导、转储SQL文件 、备份等 ,以起到备份数据的作用 。

以下主要介绍如下的三种方式,分别是:

  • 导入向导/导出向导
  • 转储SQL文件/运行SQL文件
  • 备份/恢复

导出向导

Navicat可以支持将数据导出到不同的文件格式中,如 : TXT ,CSV ,HTML ,XML,SQL,JSON等 。

若是导出SQL文件 ,则是具体的SQL语句 ,其余格式都是具体的数据 。

比如,我要导出json格式 ,导出后的数据就是下面这样的 。

无论导出什么格式的文件,导出的目的有两个:

  • 进行数据备份,以便后续重新使用 。
  • 导出后进行修改数据后,可以再次导入

也就是说导出后最终还是为了导入而使用的 。

导入向导

导入向导就是将导出的文件进行导入 ,选择表的导入向导,选择导入的文件 ,最后进行导入 。

一般情况下,导入数据时最好在原表中没有数据 ,或者向一个新表中导入数据(表结构相同) ,若原表有数据 ,可能会导致导入失败 。

转储SQL文件

转储SQL文件主要是将表结构和数据进行导出一个SQL文件 ,可以起到备份作用或者提供其它数据进行导入 。Navicat提供了两种选择,分别是仅结构 ,结构和数据。

  • 仅结构 : 选择该选项,导出的SQL文件中将会是创建表的SQL语句
  • 结构和数据 :选择该选项,导出的SQL文件是创建表和插入数据的SQL语句 。

选择转储SQL文件时,可以选择库,也可以选择具体的某个表 。

以下为仅结构导出的SQL语句 :

# 文件:abc.sql
SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for abc
-- ----------------------------
DROP TABLE IF EXISTS `abc`;
CREATE TABLE `abc` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(30) DEFAULT NULL,
  `age` smallint(3) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

运行SQL文件

运行SQL文件 : 是指可以选择外部的SQL文件进行运行 ,然后将数据生成到选择的目标库中 。这里的SQL文件一般是指导出向导产生的SQL文件 或者是 转储SQL文件到的文件 。

备份恢复

通过设置备份,可以将数据库表中数据进行备份 ,当数据出现丢失或损坏的情况下,可以通过备份将数据还原 。

那么如果要进行恢复操作呢 ? 可以选择其中的一个备份点进行恢复操作 。

进行恢复的话,数据库原有的数据将全部被恢复成备份点的数据 。

计划

这里需要注意的是,新建备份只是将当前时刻中当前所有数据进行了备份。若在后续过程中 ,此数据库数据仍在发生变化 ,那么新变化的数据就不会在备份中 ,所以备份都会结合增量备份或者差异备份,将变化的数据进行也定点备份 。而在Navicat中主要是靠计划任务来完成的 。以下为设置计划的步骤 :

  1. 选择计划 ,点击新建批处理作业 。

2.选择其中的一个库后,点击保存 ,输入保存名字 (这里相当于创建了一个计划任务)。

3.然后设置计划任务,如图所示。这里主要设置的是计划和设置里的选项 。

4.设置计划和设置选项 ,其中计划设置的策略一般都是根据数据量的大小以及数据的重要程度来确定备份策略 。


数据传输

如果你想将其中一个数据库的表,视图,函数等导入到另外一个数据库中 ,除了上面介绍的导入导出、转储SQL等功能之外 ,同样也可以使用数据传输的方式进行 ,而且这种方式更加直接一些 。

数据传输 : 其实就是将其中一个数据库的数据直接导入另外一个连接的库中,

以下为导入后的效果 。

查询

查询是我们最常用的功能之一 ,我们所编写的SQL都是查询里面 。打开的文本输入框就可以编写SQL语句 。

以下为新建查询中编写的SQL语句 。

这里面有两种运行选择,分别是运行 和 运行已选择的 ,它们的区别是 :

  • 运行 : 点击此选项 ,会将当前窗口下的SQL语句都进行运行 ,语句多了很有可能会报错 。
  • 运行已选择的 : 只运行当前选中的SQL语句 ,一般运行SQL都选择此选项 。

视图

有时候我们因为编写了大量的SQL语句 ,每一条SQL语句都代表一个具体的业务实现 ,但是因为编写得太多 ,导致每次查找起来都不太方便 。

但如果你使用视图的话,就可以根据视图名称快速地找到你的业务实现 。新建视图步骤如下:

  1. 点击视图选项 ,点击新建视图 。

2.在弹出的文本框中编写SQL语句或者将已经写好的粘贴到这里来 。

3.最终新建后,将变为如下的形式 。如果想运行那个场景直接点击,即可查询出对应的数据 ,跟在查询中选中运行的SQL一样的效果。是不是非常的方便 。

快捷键

快捷键可以帮我们提高工作效率, 下面我们来看看Navicat有哪些快捷键 。

常规快捷键

快捷键

动作

F8

Navicat主窗口或者对象选项卡

CTRL + Q

新建查询

F1

帮助

CTRL + G

打开设置位置的文件夹

F6

命令列界面

CTRL +N

新建对象 ,若选中表,则是新建表

CTRL + SHIFT +F

在数据库或模式中查找

表快捷键

快捷键

动作

F5

刷新数据

ESC

选中数据

CTRL += 或 CTRL + 滑动滚轮向上

放大窗口字体

CTRL +- 或 CTRL + 滑动滚轮向下

缩小

CTRL + /

注释行

CTRL + 0

重置缩放

CTRL + O

打开表

CTRL +F

查找数据

F3

查找下一个

SHIFT + F3

查找上一个

CTRL + D

打开设计表

CTRL + Q

打开查询对象

SHIFT + 方向键

选择单元格

ENTER

打开编辑器来编辑数据

INSERT or CTRL + N

添加记录

CTRL + DELETE

删除记录

CTRL + S

应用记录更改

ESC

放弃记录更改

CTRL + T

停止加载数据

CTRL + O

导入SQL ,此功能非常牛 ,打开查询编辑器,直接CTRL + O就可以打开外部窗口

CTRL + E

选择当前语句

CTRL + R

运行或运行已选择的

SHIFT + CTRL + R

运行当前语句

CTRL +T

停止



相关推荐

windows开启telnet服务,检测远程服务端口是否可以连通

本文介绍windwos开启telnet服务,telnet服务一般可以用于检测远程主机的某个端口服务是否可以连通,在日常的工作中,我们经常会遇到在本地的windows检测远程服务端口是否可以连通。win...

仅在Web登录新华三交换机条件下启用设备Telnet登录方式

概述Web登录新华三交换机可以在“网络-服务”页面中启用设备Telnet服务或SSH服务,也可以在“设备-管理员”设置管理员用户的可用服务,然而,在设备Web页面中,无法设置lineVTY用户线【l...

思科交换机,路由器如何关闭telnet 开启ssh服务

SSH为建立在应用层基础上的安全协议。SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。今天我们就来说说思科交换机,路...

智能化弱电行业常用的DOS命令,掌握了你也能成为...

前言在做智能化弱电项目时,前端摄像头设备安装结束后,我们会对网络摄像头进行调试,调试过程中会遇到前端摄像头没有图像或者图像出来了画面卡顿的现象。我们会采用ping命令来测试网络的连通性和网络承载能力。...

「干货」eNSP模拟器之配置Telnet登录

配置说明:配置Telnet,使R2(模拟PC)通过SW1登录到R1进行管理和配置。操作步骤:system-view##进入系统视图[Huawei]sysnameR1##改名为R1[R1]int...

win11开启telnet服务怎么操作 win11打开telent指令是什么

telnet服务是我们在进行远程连接的时候,必须要打开的一项功能。但是有不少用户们不清楚在windows11系统中怎么开启telnet服务。今天小编就使用详细的图文教程,来给大家说明一下打开telen...

华三(H3C)交换机Telnet的远程登陆

一,配置交换机管理IP[SW1]vlan20//创建管理vlan[SW1]interfacevlan20//进入vlan接口[SW1-Vlanif20]ipaddress192.168....

win10 telnet命令怎么查看端口是否打开

可能大家也会遇到这个问题,win10telnet命令查看端口是否打开的步骤是什么?具体方法如下:1、键盘输入快捷键WIN+R,打开运行窗口。2、输入cmd,点击确定按钮。3、弹出cmd命令行窗...

Windows 7如何打开Telnet功能(win7系统打开telnet)

Windows7默认安装后是没有开启telnet客户端功能的,例如,我们在开始菜单中输入cmd,然后使用telnet命令,会弹出下图提示:‘telnet’不是内部或外部命令,也不是可运行程序或批处理文...

为锐捷路由器交换机开启web和telnet,实现轻松管理

笔者上一篇文章写了关于锐捷二层交换机配置教程,那么接下来讲一下锐捷的路由交换设备配置web、telnet技巧。同样,今天的教程也是基于命令行,比较简单,适合新手小白进行学习。准备工作配置前准备:con...

一文学会telnet命令的用途和使用方法

Telnet是一个古老的远程登录协议,可以让本地计算机获得远程计算机的工作能力。它采用了TCP的可靠连接方式,可以连接任何网络互通的远程计算机。不过由于它采用了明文传输方式,存在安全风险,目前已经很少...

Telnet命令是什么?如何使用?(telnet命令在哪里开启)

telnet命令是一个常用的远程登陆工具,使用它,我们可以快捷地登陆远程服务器进行操作。那么如何使用telnet命令呢?首先,我们需要打开telnet功能,任何电脑默认是关闭此功能的,开启方式如下:打...

win11系统如何开启telnet服务(拷贝版本)

  我们要知道,Telnet协议是Internet远程登陆服务的标准协议,可以使用户在本地计算机上完成远程主机的工作,不过对于一些刚接触win11中文版系统的用户来说,可能还不知道telnet服务在哪...

如何开启telnet客户端(如何开启telnet服务)

Telnet协议是TCP/IP协议家族中的一员,是Internet远程登陆服务的标准协议和主要方式,Telnet是常用的远程控制Web服务器的方法。工作中经常用到telnet客户端,但在windows...

Telnet 是什么,如何启用它?(telnet有什么用)

对于Internet等TCP/IP网络,Telnet是一个终端仿真程序。Telnet软件在您的系统上运行并将您的个人计算机链接到网络服务器。它将所有数据转换为纯文本这一事实被认为是易受...

取消回复欢迎 发表评论: