Mysql

如何在負載平衡的 AWS Elastic Beanstalk 設置上遠端管理(使用 PhpMyAdmin)MySQL RDS?

  • April 17, 2020

儘管有類似的問題和主題,但我找不到目前有效的解決方案。

我專門編寫了遠端管理,因為我想使用我家用電腦的 PhpMyAdmin 直接連接到 RDS 實例並將其“公共可訪問性”保持為私有。

到目前為止我所做的:

  • 在我的家用電腦(mac osx)上安裝了 PhpMyAdmin 並讓它工作

  • 為 RDS 使用的安全組添加入站規則(規則:my.home.network’s.ipv4/32,埠 3306)

  • conf.inc.php根據這個建議配置了我的mac的phpmyadmin 。我從來沒有做過 SSH 隧道,但這個想法似乎比向公眾開放 3306 更安全。所以我已經進行了相應的設置,但這些是我得到的 PhpMyAdmin 錯誤:

    • 無法登錄 MySQL 伺服器
    • mysqli_real_connect(): MySQL 伺服器已經離開
    • mysqli_real_connect():讀取問候包時出錯。PID=xxxx
    • mysqli_real_connect(): (HY000/2006): MySQL 伺服器已經消失

有什麼想法我錯過/做錯了嗎?另外,我需要在mac上安裝MySQL嗎?我以為我不需要它,因為我會使用遠端的,但無論如何我已經安裝了它,並嘗試了有和沒有它。同樣的錯誤。

謝謝!

好的,所以我終於想通了。我很接近。事實證明我做錯了 SSH 隧道,那是因為我不知道我在做什麼。因此,經過更多研究後,我意識到我需要將遠端主機更改為 RDS,而不是 EC-2。

所以我最終執行了ssh這樣的命令:

ssh -L 3306:my-rds-endpoint:3306 ec2-user@my-ec2-endpoint -i /path/to/aws-eb/key

或者-fN如果您想在後台執行它,請添加:

ssh -fNL 3306:my-rds-endpoint:3306 ec2-user@my-ec2-endpoint -i /path/to/aws-eb/key

最終config.inc.php配置如下:

$cfg['Servers'][$i]['host']          = '127.0.0.1';
$cfg['Servers'][$i]['port']          = '3306';
$cfg['Servers'][$i]['connect_type']  = 'tcp';
$cfg['Servers'][$i]['extension']     = 'mysqli';
$cfg['Servers'][$i]['compress']      = FALSE;
$cfg['Servers'][$i]['auth_type']     = 'cookie';

所以,是的,我的問題是理解 ssh 命令,並意識到我需要更改它,以便它通過 EC2 實例隧道到 RDS 端點。此外,我的 Mac 的本地 MySQL 仍在後台執行,我遇到了一些奇怪的問題,因此它不允許與 3306 埠建立新連接。一旦我執行mysqladmin -u root -p shutdownPhpMyAdmin 終於可以連接到 RDS!

引用自:https://dba.stackexchange.com/questions/230005