2011-12-01 35 views
23

Estoy intentando configurar un entorno de desarrollo en mi máquina local que accede a una base de datos MySQL en AWS, pero sigo recibiendo un mensaje de "No se puede conectar".Conectarse a MySQL en AWS desde la máquina local

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

También comentó el bind-dirección en el archivo my.cnf, y permisos a la dirección IP que se conecta concedió.

¿Alguien alguna vez ha logrado que funcione?

+0

No ... me refiero a mi máquina en mi casa ... sería un control remoto conexión. –

+0

Verifique las respuestas: necesita abrir su puerto MySQL en el grupo de seguridad asociado. – jsalonen

+0

¿Posiblemente las conexiones TCP a MySQL están deshabilitadas por seguridad? Revise skip-networking en /etc/mysql/my.cnf –

Respuesta

12

supongo que esto tiene firewall por Amazon, intente utilizar un túnel SSH:

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

Nota: No abra MySQL a la Internet pública, ni siquiera cuando se utiliza el filtrado de IP. Los túneles SSH son mucho más seguros. La mejor parte: el túnel podría ser accesible con localhost: 3306 en su máquina, no es necesario cambiar la configuración:)

+0

¿Qué le parece usar PHP? función mysql_connect()? –

+0

La entrada del blog de arriba usa 3307 como puerto local para que no interfiera con un mysql local. Puede usar 'mysql_connect ('localhost: 3307', $ user, $ pw)' a AWS a través del túnel. –

+0

Gracias funcionó con MySQL Workbench ... todavía tiene problemas con mysql_connect pero jugaré con él. –

27

Si está utilizando MySql en AWS a través de una instancia de RDS, debe agregar la dirección IP que desea conéctese a los "Grupos de seguridad de DB". Para hacerlo, vaya a AWS Managment Console y seleccione RDS.
1. Seleccione "grupos de seguridad DB" en el panel izquierdo
2. Seleccione "por defecto"
3. Seleccionar "CIDR/IP" en el cuadro de selección e introduzca sus estaciones de trabajo dirección IP pública. Ejemplo:
23.234.192.123/32 ( No se olvide de la/32 para una sola ip)
4. Haga clic en "Agregar"
5. Espere unos minutos para que entre en vigor y luego conectar su Cliente MySql

Esto solo se aplica a las instancias RDS, si está utilizando MySql instalado en una instancia EC2, las instrucciones son las mismas que para acceder a MySql desde cualquier máquina remota.

+2

en lugar de pasar por la rigurosa tarea de agregar la dirección IP de su cliente a la instancia de RDS, simplemente me conecto a una instancia de EC2 en ejecución que se puede conectar al RDS. Así que su método de conexión en el cuadro de diálogo "Gestionar conexiones de BD" en MySQL WB es "TCP/IP estándar sobre SSH", luego especifique los parámetros SSH, y lo más importante, el nombre de host MySQL, que es el nombre de host RDS. – mblackwell8

+0

@ mblackwell8 ¿alguien dijo algo sobre MySQL WB? Estamos tratando de conectarnos desde una aplicación php localmente. – Neo

+1

Esto está desactualizado ya que no hay una sección de "Grupos de seguridad de DB" en el panel izquierdo. –

1

He estado utilizando MySQL Workbench http://www.mysql.com/products/workbench/ con RDS y funciona muy bien. Muy fácil de crear y guardar una nueva instancia de servicio de base de datos. Haga clic en "Nueva instancia del servidor" en "Administración del servidor" y siga las instrucciones. Tendrá que ingresar la información provista en la página web de AWS RDS para esa instancia (por ejemplo, su punto final).

NOTA: Para que pueda conectarse realmente, DEBE agregar su dirección IP en los "Grupos de seguridad de DB". El enlace está en la columna de la izquierda, que se titula "Navegación". Uso la opción "CIDR/IP" (la otra es EC2 Security Group). Asegúrese de incluir un "/ ##" después de la IP, como el "/ 32" que usan en el ejemplo (lo verá en la página). En unos segundos, la dirección IP debería estar autorizada.

Después de eso, regrese a MySQL Workbench y complete el proceso de creación de la nueva instancia del servidor.

Para usar la conexión, su código podría ser algo como esto (que extractos de mi código de 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

Mi experiencia en agosto de 2013 fue la siguiente para una instancia RDS creada a través de Elastic Beanstalk.

0) Suponiendo que la instancia RDS ya se ha creado
1) Inicio de sesión en la consola de administración: https://console.aws.amazon.com/console/home
2) Seleccionar Servicios-> VPC
3) Seleccione Grupos de seguridad (en el lado izquierdo)
4) Seleccione el grupo cuya descripción dice "Grupo de seguridad para DB RDS ..."
5) En el panel Grupo de seguridad seleccionado en la parte inferior de la página , elija "Entrante"
6) Seleccione MySQL como la regla.
7) Escriba la dirección IP de mi máquina local, p. 145.23.32.15/32
8) Haga clic en Añadir Regla y aplicar la Regla Cambios

Después de hacer esto podría conectar a la base de datos utilizando MySQL desde mi máquina local.

a) Desde la consola de administración seleccione Servicios-> RDS
b) Haga clic en instancias de base de datos (sólo uno tengo) y seleccione "Ir al detalle de página" para la instancia requerida
c) Obtener host y el puerto de la punto final
d) Desde una sesión de terminal, haga algo así como: mysql --host blah.blah.blah.us-west-2.rds.amazonaws.com --port 3306 -u mi-nombre-usuario -p

+2

¡Gran respuesta! Eso fue exactamente lo que estaba buscando – Ertai

+0

Lo hice. Y luego en la terminal escribí: ssh database.blablabla.us-west-2.rds.amazonaws.com:3306, pero dice "Operación para el host blablabla. Tiempo de operación agotado" – coolcool1994

+1

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

1

Estoy en una máquina con Windows 7 y tuve que hacer los siguientes 3 cambios para poder conectarme a AWS RDB.

  1. actualización VPC grupo de seguridad en AWS Console (similar a lo que tiene mikemay anterior)

    • De https://console.aws.amazon.com, haga clic en Servicios (arriba a la izquierda) y elija VPC.
    • A continuación, seleccione los grupos de seguridad
    • Haga clic en el grupo de seguridad que tiene la descripción "Grupo de Seguridad de RDS DB ..."
    • En la ficha "entrante", elegir la opción "MySQL" en el crear una nueva regla desplegable .
    • Agregue su dirección IP en formato CIDR y haga clic en Agregar regla.
    • Haga clic en Aplicar cambios de regla.
  2. actualización my.cnf en la configuración local MySQL

    • Cambio "bind-address = 127.0.0.1" para "bind-address = 0.0.0.0"
    • comentario a cabo "skip-networking "
  3. Desactivar Windows Firewall

    • Vaya a Panel de control/Sistema y seguridad/Firewall de Windows y apague el Firewall de Windows.

Después de estos cambios, soy capaz de conectarse a través de ambos

  • MySQL Workbench usando Database-> conectarse a la base de datos
  • símbolo del sistema con

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