如何连接到外部 ip 上的数据库?

How can I connect to a database on an external 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();}?>

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

P.s:抱歉我的英语不好

使用PHP连接远程MySQL服务器非常容易,你需要做的是:

  1. 在远程服务器中创建一个 MySQL 用户。

  2. 授予用户完全权限:

    • 必须设置服务器的防火墙以启用端口 3306 上的传入连接
    • 您必须在 MySQL 中拥有允许从 %(任何主机)连接的用户(有关详细信息,请参阅 manual
  3. 使用 PHP 代码连接到服务器(示例如下)

$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

首先检查您的 Public 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';

那么它很适合你:)

 <?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";
 ?>