自从学会使用了Navicat,用一段时间发现Navicat有一些的问题缺陷:
1.需要购买花钱才能使用,网上找的破解版也能使用,但一些公司有版权限制,又不能使用;
2.在连接过程中经常断开连接,在来回切换电脑连接网络或一段时间不使用Navicat再次使用时就会无法正常运行SQL,需要关闭客户端再次连接才能正常运行;
今天就推荐另一款数据库管理工具:DBeaver,这是免费和开源(GPL)为开发人员和数据库管理员通用数据库工具 支持 MySQL, PostgreSQL, Oracle, DB2, MSSQL, Sybase, Mimer, HSQLDB, Derby, 以及其他兼容 JDBC 的数据库。DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等。
1.DBeaver官网链接点击进入DBeaver官网,选择Download,进入下载页面DBeaver官网下载,我的电脑是Windows系统,选择对应的Zip压缩包下载,若是Mac系统选择Mac安装包下载即可。
2.下载解压之后在文件中找到.exe的安装包进行安装,安装路径根据需要自行选择。
3.安装完成之后需要在DBeaver中按照提示安装驱动,安装完成即可。
导出连接:
1.在Navicat工具界面,鼠标放在连接名称上,点击文件>选择导出连接
2.更改保存路径,记得勾选导出密码,点击确定,生产connections.ncx文件,注意以.ncx结尾的文件
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";
1.在拿到数据库的服务器地址、端口、用户名、密码后,就可以在DBeaver中顶部tab栏中找到数据库-新建数据库连接,在SQL中找到MySQL,输入对应地址、端口、用户名、密码后就可以正常连接了;
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转换成小写字母
注意:本文所有文字仅代表个人想法,没有对任何软件攻击行为,只是为了希望学习更多的知识和积累个人的经验,欢迎大家前来交流学习!