从Navicat切换到DBeaver的详细教程,一学即会。

自从学会使用了Navicat,用一段时间发现Navicat有一些的问题缺陷:

1.需要购买花钱才能使用,网上找的破解版也能使用,但一些公司有版权限制,又不能使用;

2.在连接过程中经常断开连接,在来回切换电脑连接网络或一段时间不使用Navicat再次使用时就会无法正常运行SQL,需要关闭客户端再次连接才能正常运行;

今天就推荐另一款数据库管理工具:DBeaver,这是免费和开源(GPL)为开发人员和数据库管理员通用数据库工具 支持 MySQL, PostgreSQL, Oracle, DB2, MSSQL, Sybase, Mimer, HSQLDB, Derby, 以及其他兼容 JDBC 的数据库。DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等。

DBeaver下载安装:

1.DBeaver官网链接点击进入DBeaver官网,选择Download,进入下载页面DBeaver官网下载,我的电脑是Windows系统,选择对应的Zip压缩包下载,若是Mac系统选择Mac安装包下载即可。

从Navicat切换到DBeaver的详细教程,一学即会。_第1张图片

 2.下载解压之后在文件中找到.exe的安装包进行安装,安装路径根据需要自行选择。

从Navicat切换到DBeaver的详细教程,一学即会。_第2张图片

 3.安装完成之后需要在DBeaver中按照提示安装驱动,安装完成即可。

Navicat的数据库导出连接:

导出连接:
1.在Navicat工具界面,鼠标放在连接名称上,点击文件>选择导出连接

从Navicat切换到DBeaver的详细教程,一学即会。_第3张图片


2.更改保存路径,记得勾选导出密码,点击确定,生产connections.ncx文件,注意以.ncx结尾的文件

从Navicat切换到DBeaver的详细教程,一学即会。_第4张图片

 3.找到刚刚导出的.ncx文件,右键点击选择打开方式为txt记事本,就可以看到所连接的IP、端口、用户名及密码。(注意:此时从Navicat导出的密码是经过加密的,不能直接连接使用)

一:可以找运维或后端索要密码连接;

二:可以将加密过的密文进行解密,解密方法:在txt文档中搜索Password,找到Password=后面的明文,在下面代码中进行运行解密,就可以得到数据库连接的密码;

那么就需要用到一段PHP代码,该代码可以通过在线运行PHP代码在线运行:

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);
    }
};
 
 
//需要指定navacat版本两种,11或12
$navicatPassword = new NavicatPassword(11);
 
//解密,括号里面写入navicat加密后的密码
$decode = $navicatPassword->decrypt('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
echo $decode."\n";

DBeaver数据库的连接

1.在拿到数据库的服务器地址、端口、用户名、密码后,就可以在DBeaver中顶部tab栏中找到数据库-新建数据库连接,在SQL中找到MySQL,输入对应地址、端口、用户名、密码后就可以正常连接了;

从Navicat切换到DBeaver的详细教程,一学即会。_第5张图片

 2.连接成功之后就可以正常运行MySQL语句了,初次使用会与Navicat快捷键有所不同,多多使用几次习惯了就行啦,顺带分享一些常用的快捷键,希望能够帮到大家了!

ctrl + enter 执行sql
ctrl + \  执行sql,保留之前窗口结果
ctrl + alt + ↑ 向上复制一行
ctrl + alt + ↓ 向下复制一行
ctrl + shift + F 对sql语句进行格式化,对于很长的sql语句很有用
ctrl + d 删除当前行
alt + ↑ 向上选定一条sql语句
alt + ↓ 向下选定一条sql语句
ctrl + / 行注释
ctrl + shift+ / 块注释
ctrl + f 查找、替换
ctrl + space sql提示(如果写了from table后也会自动提示field)
ctrl + shift + E 执行计划
ctrl + shift + U 将选定的sql转换成大写字母
ctrl + shift + L 将选定的sql转换成小写字母

注意:本文所有文字仅代表个人想法,没有对任何软件攻击行为,只是为了希望学习更多的知识和积累个人的经验,欢迎大家前来交流学习!

你可能感兴趣的:(经验分享,MySQL数据库,数据库,mysql)