音差.无法访问远程 mysql 数据库
Phonegap. Cannot accessing remote mysql database
我正在用Phonegap做我的第一个实验。我想构建一个从 MySql 服务器检索数据的应用程序,但似乎问题是我无法连接到我的 dB。
当我建立网站时,这很容易。我使用 PHP 和以下代码:
$conn = new mysqli($servername, $username, $password);
$servername
在哪里localhost
但是使用Phonegap localhost
当然不起作用,所以我必须使用hostname
或IP address
。
这就是问题所在。我有一个带有IP的VPS,主机名假设是 vps.my-domain.com。两者都不会让我访问MySql db,我不明白为什么。
以下字符串报告:
'SQLSTATE[HY000] [2005] 未知的 MySQL 服务器主机 'vps.my-domain.com:3306' (20)'
$conn = new mysqli("xxx.yy.kkk.qqq", $username, $password);
$conn = new mysqli("vps.my-domain.com", $username, $password);
当我在VPS上运行它并且使用localhost
时,我的代码(HTML + Jquery+ Ajax + PHP)工作正常,但是当我使用IP address
或hostname
时它失败了。
我也尝试了mySQLjs:
MySql.Execute(
"http://xxx.yy.kkk.qqq",
"username",
"password",
"phonegap",
"select * from test",
function (data) {
console.log(data)
});
但仍然没有成功。
我在mySQLjs上找到的演示代码工作正常,所以我很确定我缺少一些关于我的连接的东西。
如何使用IP address
或hostname
而不是使用localhost
访问我的 MySql 数据库?是否有应该在我的VPS上设置的配置?
已解决
经过多次诱惑,我解决了这个问题。
默认情况下,出于安全原因,对 MySQL 数据库服务器的远程访问处于禁用状态。
1-您需要编辑MySQL配置文件并允许从与本地主机不同的来源进行访问。
nano /etc/mysql/my.cnf
2-将行bind-address
更改为:
bind-address = your_ip_number i.e. bind-address = xxx.yy.qqq.tt
3-重新启动MySQL:
/etc/init.d/mysql restart
4-使用PHPMyAdmin创建一个用户,该主机是您的IP地址,因此它看起来像:
phonegap@your_ip_number
下面是代码(HTML+PHP+CONFIG.XML)
.HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Fetch MySQL data into Phonegap app</title>
<script src="jquery.min.js"></script>
<script src="phonegap.js"></script> <!-- When you build the app with build.phonegap.com remove the phonegap.js file from the package you are going to upload but keep its reference -->
</head>
<body>
HELLO WORLD!
<div id="output"></div>
<script>
$(document).ready(function($){
var output = $('#output');
$.ajax({
url: 'http://your_domain.com/get.php', // FULL PATH!
dataType: 'jsonp',
jsonp: 'jsoncallback',
timeout: 3000,
success: function(data, status){
$.each(data, function(i,item){
var landmark = '<h1>'+item.title+'</h1>'
+ '<p>'+item.description+'<br>'
+ item.url+'</p>';
output.append(landmark);
});
},
error: function(){
output.text('There was an error loading the data.');
}
});
});
</script>
</body>
.PHP
<?php
header("Access-Control-Allow-Origin: *");
$db_username = 'the_user_you_created';
$db_password = 'the_password';
$db_name = 'the_db_name';
$db_host = 'your_ip_number';
$mysqli = new mysqli($db_host, $db_username, $db_password, $db_name);
if ($mysqli->connect_error) {
die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
}
// Run the query and fetch the data. $html contains the result
// Convert it to JSON and remember to add the 'jsoncallback' string
echo $_GET['jsoncallback'] . '(' . json_encode($html) . ');';
?>
CONFIG.XML这是 Phonegap 的配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<widget xmlns = "http://www.w3.org/ns/widgets"
xmlns:gap = "http://phonegap.com/ns/1.0"
id = "com.phonegap.example"
versionCode = "10"
version = "1.0.0" >
<!-- versionCode is optional and Android only -->
<name>Your app</name>
<description>
My first MySql connection with Phonegap
</description>
<author href="http://www.my_domain.com">
Its me
</author>
<!-- The two following lines make the difference! Important -->
<gap:plugin name="cordova-plugin-whitelist" source="npm"/>
<!-- In my esperience only * worked. Using the IP address (http://xxx.yy.qqq.tt or simply xxx.yy.qqq.tt) did not work -->
<access origin="*" subdomains="true" />
</widget>
压缩 HTML 文件、XML 文件和 JQuery.min.js并使用您的帐户将包上传到 build.phonegap.com。
希望我帮助了某人!
- 将地理编码结果转换为php变量以发布到mysql数据库
- 从MySQL数据库中获取输入数据需要两次页面刷新
- 如何使用PHP将javascript变量添加到mysql数据库中
- 在javascript中跳过周六和周日,并向mysql数据库中添加不重复的条目
- 当select标记触发onChange事件时,从mysql数据库加载html表
- 如何使用mysql数据库在node.js中登录API
- 如何比较两个MySql数据库
- 我应该如何使用node.js和导出来调用mysql数据库
- 输入框值将保存到 MySQL 数据库
- 我的地图数据's不会使用php存储在mysql数据库中
- 将Laravel5.0中的谷歌图表与mysql数据库中的数据集成
- 将本地MySQL数据库与PHP&谷歌地图上的JavaScript
- 尝试将js中的字符串写入mySql数据库时获取%%
- 当用户键入一封信时,如何使用ajax自动完成来显示MySQL数据库中的值
- 音差.无法访问远程 mysql 数据库
- 使用自动完成文本框从mysql数据库获取表记录并显示在文本字段中
- 复选框(JSP PAGE)并插入到mysql数据库
- 使用 Node-MYSQL 检索 MYSQl 数据库中最新的 X 个条目量?节点.js
- 如何从javascript访问MySql数据库的数据
- 如何在 JavaScript 函数中使用 MySQL 数据库数据