2017-09-10 63 views
-3

我想与在其上的服务器,例如PC的外部IP连接到数据库:如何连接到外部IP上的数据库?

<? $db_host = "xxx.xxx.xxx.xxx" //external ip 
$db_user = "user"; $db_password = "password"; $db_database = "database"; 
$conn = "mysql:host=$db_host;dbname=$db_database;charset=utf8mb4"; try {$db = new PDO($conn , "$db_user", "$db_password");}catch(PDOException $e) {echo 'Error: '.$e->getMessage();}?> 

所以,你能做到吗?如果是这样,我该怎么做? 感谢大家的帮助;)

PS:对不起,我英文不好

+0

这是哪里的服务器?它是一家托管公司;云端;你拥有的服务器等? – w0051977

+0

当你尝试这个时,你有任何错误吗? – C2486

+0

@ w0051977服务器是我的Rpi – Superjolly002

回答

0

这是很容易来连接远程MySQL服务器使用PHP,你必须做的是:

  1. 创建远程服务器中的MySQL用户。

  2. 给完全权限的用户:

    • 服务器的防火墙必须建立启用端口3306
    • 进来的连接,您必须在MySQL谁被允许从连接用户%(任何主机)(见manual了解详细信息)
  3. 连接到使用PHP代码(采样给出以下)

  4. 服务器
$link = mysql_connect('your_my_sql_servername or IP Address', 'new_user_which_u_created', 'password'); 
if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
} 

echo 'Connected successfully'; 

mysql_select_db('sandsbtob',$link) or die ("could not open db".mysql_error()); 
// we connect to localhost at port 3306 
+0

用于编辑mysql权限: mysql> CREATE USER'usr'@'%'IDENTIFIED BY'some_pass'; mysql>在testDb上授予所有特权。* to'monty'@'%'WITH GRANT OPTION; –

+0

为了解决弃用的mysql_ *函数被使用在答案中。 –

+0

我做了更改,但我做了:“弃用:mysql_connect():mysql扩展名被弃用,将来会被删除:使用mysqli或PDO替代”和“Warning:mysql_connect():连接超时” – Superjolly002

0

首先检查你的公网IP地址[Public Ip Means External Ip Address]从这里:https://www.whatismyip.com/

并立即检查你的系统的IP地址(在cmd使用IPCONFIG内部IP地址)

两个是不同的所以你需要使用Public Ip Address你可以得到哪一个https://www.whatismyip.com

现在,您必须授予数据库特定iP地址的访问权限,默认情况下,Mysql不允许访问它,因此您需要为此命令启用该命令。

像这样:

SQL> GRANT ALL PRIVILEGES ON database.* TO 'user'@'your_database_pc_public_ip' IDENTIFIED BY 'newpassword'; 

例::

SQL> GRANT ALL PRIVILEGES ON database.* TO 'any_name'@'public_ip' IDENTIFIED BY 'any_password'; 

那么它的工作对你罚款:)

0
<?php 
    $dbServerName = "DNS Name or ip address"; 
    $dbUsername = "username"; 
    $dbPassword = "password"; 
    $dbName = "dbname"; 

    // create connection 
    $conn = new mysqli($dbServerName, $dbUsername, $dbPassword, $dbName); 

    // check connection 
    if ($conn->connect_error) 
    { 
     die("Connection failed: " . $conn->connect_error); 
    } 
    echo "Connected successfully"; 
?> 
+0

我做了但我做了:“ 警告:mysqli :: mysqli():(HY000/2002):连接超时” – Superjolly002