2011-12-01 10 views
23

Sto provando a configurare un ambiente di sviluppo sul mio computer locale che accede a un DB MySQL su AWS, ma continuo a ricevere un messaggio "Impossibile connettersi".Connessione a MySQL su AWS dal computer locale

mysql_connect('xxx.xxx.xxx.xxx:3306', 'USERNAME', 'PASSWORD'); 

ho anche commentato l'bind-indirizzo nel file my.cnf, e le autorizzazioni per l'indirizzo IP che si connette concesso.

Chiunque funziona correttamente?

+0

No ... Intendo la mia macchina a casa mia ... sarebbe un telecomando connessione. –

+0

Verificare le risposte: è necessario aprire la porta MySQL nel gruppo di sicurezza associato. – jsalonen

+0

Forse le connessioni TCP a MySQL sono disabilitate per sicurezza? Controlla skip-networking in /etc/mysql/my.cnf –

risposta

12

Suppongo che questo è firewalled da Amazon, provare a utilizzare un tunnel SSH:

http://blogs.oracle.com/divyen/entry/connecting_mysql_server_on_amazon

Nota: Non aprire MySQL alla rete Internet pubblica, nemmeno quando si utilizza il filtraggio IP. I tunnel SSH sono molto più sicuri. La parte migliore: il tunnel potrebbe essere accessibile con localhost: 3306 sulla macchina, non è necessario modificare la configurazione:)

+0

Che ne dici di usare PHP? funzione mysql_connect()? –

+0

Il post di blog sopra usa 3307 come porta locale in modo che non interferisca con un mysql locale. Puoi usare 'mysql_connect ('localhost: 3307', $ user, $ pw)' in AWS attraverso il tunnel. –

+0

Grazie ha funzionato con MySQL Workbench ... ha ancora problemi con mysql_connect ma giocherò con esso. –

27

Se si utilizza MySql su AWS tramite un'istanza RDS, è necessario aggiungere l'indirizzo IP che si desidera connettersi al "DB Security Groups". Per fare questo vai alla tua AWS Managment Console e seleziona RDS.
1. Selezionare "Gruppi DB di sicurezza" sul pannello di sinistra
2. Selezionare "default"
3. Selezionare "CIDR/IP" dalla casella di selezionare e inserire le workstation indirizzo IP pubblico. Esempio:
23.234.192.123/32 ( non dimenticare l'/ 32 per un singolo IP)
4. Fare clic su "Aggiungi"
5. attendere qualche minuto per farlo entrare in vigore e quindi collegare il Client MySql.
Questo vale solo per le istanze RDS, se si utilizza MySql installato su un'istanza EC2, le istruzioni sono le stesse di accesso a MySql da qualsiasi computer remoto.

+2

piuttosto che passare attraverso la trappola di aggiungere l'indirizzo IP del client all'istanza RDS, mi collego solo a un'istanza EC2 in esecuzione che può connettersi all'RDS. Quindi il tuo metodo di connessione nella finestra di dialogo "Gestisci connessioni DB" in MySQL WB è "Standard TCP/IP su SSH", quindi specifica i parametri SSH e, soprattutto, il nome host MySQL, che è il nome host RDS. – mblackwell8

+0

@ mblackwell8 qualcuno ha detto qualcosa su MySQL WB? Stiamo provando a connetterci da un'applicazione php localmente. – Neo

+1

Questo è ormai obsoleto in quanto non vi è alcuna sezione "Gruppi di sicurezza DB" nel pannello di sinistra. –

1

Ho utilizzato MySQL Workbench http://www.mysql.com/products/workbench/ con RDS e funziona benissimo. Molto facile da creare e salvare una nuova istanza di servizio del database. Fai clic su "New Server Instance" in "Server Administration" e segui le istruzioni. Dovrai inserire le informazioni fornite nella pagina web di AWS RDS per quell'istanza (ad esempio, il suo endpoint).

NOTA: per poter effettivamente connettersi, è necessario aggiungere il proprio indirizzo IP nei "Gruppi di sicurezza DB". Il collegamento è nella colonna di sinistra, che si intitola "Navigazione". Io uso l'opzione "CIDR/IP" (l'altro è EC2 Security Group). Assicurati di includere un "/ ##" dopo l'IP, come "/ 32" che usano nell'esempio (lo vedrai sulla pagina). In pochi secondi, l'indirizzo IP dovrebbe essere autorizzato.

Dopodiché, tornare a MySQL Workbench e completare il processo di creazione dell'istanza New Server.

Per utilizzare la connessione, il codice potrebbe essere simile a questo (che estratti del mio codice Java):

String url = "jdbc:mysql://yourdatabasename.foo.us-east-1.rds.amazonaws.com:3306/"; 
String userName = "your_user_name"; 
String password = "your_password"; 
String dbName = "your_db_name"; 
String driver = "com.mysql.jdbc.Driver"; 
Connection connection = DriverManager.getConnection(url + dbName, userName, password); 
32

La mia esperienza in agosto 2013 è la seguente per un'istanza RDS creata attraverso Elastic Beanstalk.

0) Supponendo che l'istanza di RDS è già stato creato
1) Accedere alla console di gestione: https://console.aws.amazon.com/console/home
2) Selezionare Servizi-> VPC
3) Selezionare Gruppi di sicurezza (sul lato sinistro)
4) Selezionare il gruppo la cui descrizione indica "Gruppo di sicurezza per DB RDS ..."
5) Nel pannello Gruppo di sicurezza selezionato nella parte inferiore della pagina , selezionare "Inbound"
6) Selezionare MySQL come regola.
7) Digitare l'indirizzo IP della macchina locale, ad es. 145.23.32.15/32
8) Fare clic su Aggiungi Regola e applicare l'articolo Modifiche

Dopo aver fatto questo ho potuto connettersi al database utilizzando mysql dalla mia macchina locale.

a) Dalla console di gestione selezionare Servizi-> RDS
b) Fare clic su Istanze DB (ho solo una) e selezionare "Vai alla pagina dei dettagli" per l'istanza di richiesta
c) Ottenere Host e la porta dal endpoint
d) Da una sessione terminale fare cose del genere: mysql --host blah.blah.blah.us-west-2.rds.amazonaws.com --port 3306 -u my-nome-utente -p

+2

Ottima risposta! Era esattamente quello che stavo cercando – Ertai

+0

. L'ho fatto. E poi nel terminale ho digitato: ssh database.blablabla.us-west-2.rds.amazonaws.com:3306, ma dice "Operazione sull'host blablabla Operazione scaduta" – coolcool1994

+1

provare mysql --host blah-blah-blah .us-west-2.rds.amazonaws.com --port 3306 -u -p – mikemay

1

Sono su un computer con Windows 7 e ho dovuto effettuare le seguenti 3 modifiche per potermi connettere a AWS RDB.

  1. aggiornamento VPC Security Group in AWS Console (simile a quello che ha mikemay sopra)

    • Da https://console.aws.amazon.com, clicca sui servizi (in alto a sinistra) e scegliere VPC.
    • successiva selezionare gruppi di protezione
    • Cliccare sul gruppo di protezione che ha la descrizione "gruppo di protezione per RDS DB ..."
    • Nella scheda "in entrata", scegliere "MYSQL" nel creare una nuova regola a discesa .
    • Aggiungi il tuo indirizzo IP in formato CIDR e fai clic su Aggiungi regola.
    • Fare clic su Applica modifiche alle regole.
  2. aggiornamento my.cnf nella configurazione di MySQL locale

    • Change "bind-address = 127.0.0.1" a "bind-address = 0.0.0.0"
    • come commento "salta-networking "
  3. disattivare Windows Firewall

    • Andare su Pannello di controllo/Sistema e sicurezza/Windows Firewall e disattivare Windows Firewall.

Dopo queste modifiche, sono in grado di collegarsi sia attraverso

  • MySQL Workbench utilizzando Database-> connettersi al database
  • Prompt dei comandi con

    mysql.exe -h <AWS DB Endpoint> -U <UserName> -P <Port Number, likely 3306> -p