簡體   English   中英

未知的 MySQL 服務器主機

[英]Unknown MySQL server host

在嘗試連接到我的數據庫服務器時,我遇到了未知主機的問題:

Warning: mysqli::mysqli() [mysqli.mysqli]: (HY000/2005): Unknown MySQL server host 'xxxxxxxxxxxxx:port' in index.php on line 18

第 18 行是我嘗試請求連接 MySQL 服務器的那一行:

    $this->db = new mysqli($db_host, $db_user, $db_psw, $db_name);

我在1&1網站托管公司托管我的數據庫。

當名稱解析在主機上不起作用時,通常會出現這種情況。 如果您的連接目標始終相同,則您可能希望使用其 IP 地址進行連接。

如果您使用此代碼:

$Mysqli= new mysqli('mysql2.servidoreswindows.net:3306',
                    'usu', 'pass', 'dbname');

你可以嘗試寫沒有端口的主機

那是:

$Mysqli= new mysqli('mysql2.servidoreswindows.net', 'usu', 'pass', 'dbname');

請注意 AWS 安全組:

在我的情況下,我可以通過 Telnet 從我的計算機連接到 RDS,也可以通過 Mysql Workbench 連接,但我無法從與 RDS 位於同一 VPC 內的 EC2 實例連接。

解決方案是:

  1. 我為 RDS 創建了一個安全組(exampl1)並分配給它。
  2. 我為 EC2 創建了一個安全組(exampl2)並分配給它。
    並且我也將 RDS 安全組(exampl1)分配給了 EC2。 <<這救了我。

信息:如果您的 EC2 已分配 2 個或更多安全組,則在 RDS 安全組中,入站源必須創建規則,因為您的 EC2 已分配了多個安全組。

亞馬遜文檔說:
VPC 中的 EC2 實例與數據庫實例共享同一個VPC 安全組。 http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.RDSSecurityGroups.html

我知道這是一個老問題。 但是我今天遇到了同樣的問題,我找到的答案都不是正確的。

我的問題最終是我們的防火牆上沒有打開端口 3306,我試圖從外部服務器連接到內部 mysql 數據庫。

我不確定為什么在這種情況下它給你的錯誤是“未知主機”。 我本來期待更像“無法連接”的東西。 或“連接被拒絕。”,但使用來自內部服務器的完全相同的代碼工作正常,導致我得出這個結論。

確保您不包括“http://”部分。 我在.env文件中使用了http://example.com 當我將其保留為example.com時,它起作用了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM