簡體   English   中英

遠程 MySQL 連接錯誤 SQLSTATE[HY000] [2002]

[英]Remote MySQL Connection Error SQLSTATE[HY000] [2002]

我開發了一個 Laravel 項目,它連接到遠程站點上的 MySQL 服務器(通過靜態 IP)。 在每個站點上,我都在路由器上設置了端口轉發(沒有限制),以便將 MySQL 服務器公開給 Internet。 此外,在每個遠程 MySQL 服務器上,我都創建了一個沒有 IP 限制的用戶,並且該服務正在偵聽所有接口。 我已經驗證公共連接正在工作,因為從我的開發服務器(這是我家中的筆記本電腦)我能夠執行查詢並從遠程站點檢索結果。 我已經在我的托管服務提供商的生產服務器中部署了該項目(通過 Plesk)。 除了一件事,該項目工作正常。

當代碼(在生產服務器上)嘗試連接到任何遠程 MySQL 服務器時,會收到錯誤SQLSTATE[HY000] [2002] An attempt was made to access a socket in a way forbidden by its access permissions 我已驗證生產服務器上每個遠程 MySQL 服務器的連接字符串與我的本地服務器相同。

可能是什么問題?

感謝您的時間。

編輯:以下代碼在本地機器上成功,但在生產中失敗。

$remote_db = Store::find(1)->db_url; // mysql://db_user:db_pass@public_ip:18889/database
Config::set("database.connections.remote-db-1", [
    'url' => $remote_db
]);
DB::connection('remote-db-1')
    ->select('SELECT * FROM my_table'); // this produces the error

您可以在 config 文件夾中創建到 database.php 文件的多個連接,然后只需在模型中包含$connection類變量即可使用特定連接。

/**
* The database connection used by the model.
*
* @var string
*/
protected $connection = "master_db";

在此處輸入圖片說明

聯系我的托管服務提供商后,他們告知防火牆規則禁止通過異常端口(80,443,3306 等除外)的所有傳出流量。 所以我將遠程 MySQL 上的所有端口從 18889 更改為 3306,一切正常。

暫無
暫無

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

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