heavstar 2019-06-21
完整记录使用Navicat Premium管理SAE共享型Mysql数据库的全过程。借鉴了包括博客流水天心、SAE新浪博客等网上的多篇文章。
SAE的Mysql数据库默认使用phpMyAdmin进行管理,截止到本文撰写时间,SAE的phpMyAdmin仍然停留在3.3.81版本,体验上比较差,且每次都需要登录SAE控制台、输入安全密码才能进入数据库管理,比较麻烦。SAE官方提供的VPN隧道不知是否由于网络问题,经常出现连接不到数据库的情况,而且每次都需要使用OpenVPN进行登录,输入用户名、密码也是一个麻烦的事情。本文使用Navicat的http通道功能,方便快捷的管理SAE共享型Mysql数据库。本文使用的Navicat是Navicat Premium 11.2.15 for windows版本,根据一般经验,Navicat Premium 11.2+版本均可使用,Navicat for Mysql经稍微修改也可以使用。
1、查找SAE Mysql数据库的数据库名、用户名和密码,记录下来,后面使用。
1、 安装Navicat后,在安装根目录找到ntunnel_mysql.php文件,安装根目录默认地址为:C:\Program Files\PremiumSoft\Navicat Premium,将ntunnel_mysql.php放到自己的SAE项目的可访问目录中。我使用的是ThinkPHP5.0,可访问目录为\public,所以将该文件放到\public\下。
2、 对ntunnel_mysql.php文件的内容进行修改,将307行-316行代码进行修改替换,注意$uername
和$password
填写你在详情页面刚刚查询到的数据库用户名和密码。(如果使用不同版本的Navicat代码的位置可能会有少许改变):
文件中的原代码:
if( $_POST["port"] ) $hs .= ":".$_POST["port"]; $conn = mysql_connect($hs, $_POST["login"], $_POST["password"]); $errno_c = mysql_errno(); //if (phpversion_int() >= 50203){ // for unicode database name // mysql_set_charset('UTF8'); //} if(($errno_c <= 0) && ( $_POST["db"] != "" )) { $res = mysql_select_db( $_POST["db"], $conn); $errno_c = mysql_errno(); }
替换为:
$username = '0a7sdfna';//此处为你自己的Mysql数据库的用户名 $password = 'hs7sdbsnsniioesdfsd33sjk9887f5dfab';//此处为你自己的Mysql数据库的密码 if ($_POST["login"] == $username && $_POST["password"] == $password) { $hs = SAE_MYSQL_HOST_M . ':' . SAE_MYSQL_PORT; $conn = mysql_connect($hs, SAE_MYSQL_USER, SAE_MYSQL_PASS); $errno_c = mysql_errno(); if(($errno_c <= 0)) { $res = mysql_select_db(SAE_MYSQL_DB, $conn); $errno_c = mysql_errno(); } } else { EchoHeader(401); echo GetBlock("Authentication failed"); exit(); }
3、修改完之后将代码更新上传至SAE服务器。
4、新建Navicat Mysql数据库连接。依次对常规、HTTP和高级选项卡做调整。
在常规选项卡中输入连接名、主机名、端口、用户名和密码。其中主机名要填写SAE Mysql分布式数据库的主库地址w.rdc.sae.sina.com.cn
,端口3306,用户名和密码填写自己刚刚详情页面查询到的数据库用户名和密码。
在HTTP选项卡中勾选“使用HTTP通道”,并输入通道网址,该网站即为你SAE服务器中你刚刚上传的nutnnel_mysql.php文件的可访问地址。
在高级选项卡中勾选使用高级连接,然后点击“添加数据库到列表”,输入刚刚在详情页面查询到到数据库名。
5、点击确定之后连接就建立完成了,也可以在点击确定之前点击“连接测试”进行一下测试,没问题的话就通过了。Then, enjoy it!
小提示:由于SAE的限制,有一些操作还是无法完成的,Navicat会有相应的报错提示,提示对过多的表进行了操作,原因其实就是你是使用了共享型的数据库,如果使用了独立数据库,应该就不会报错啦~