如何在負載平衡的 AWS Elastic Beanstalk 設置上遠端管理(使用 PhpMyAdmin)MySQL RDS?
儘管有類似的問題和主題,但我找不到目前有效的解決方案。
我專門編寫了遠端管理,因為我想使用我家用電腦的 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 shutdown
PhpMyAdmin 終於可以連接到 RDS!