2012-01-20 38 views
12

Al intentar conectar con el servidor de base de datos, me encuentro con el problema de host desconocido:Desconocido MySQL host del servidor

Warning: mysqli::mysqli() [mysqli.mysqli]: (HY000/2005): Unknown MySQL server host 'xxxxxxxxxxxxx:port' in index.php on line 18 

la línea 18 es la línea donde trato de solicitar a la conexión al servidor MySQL :

$this->db = new mysqli($db_host, $db_user, $db_psw, $db_name); 

Puedo alojar mi base de datos de la empresa de alojamiento sitio web.

+1

Verifique el valor de $ db_host, $ dbuser y otras variables. – adatapost

+1

¿Qué está pasando como el host –

+0

? Parece que sus variables $ db_host etc. se inicializan a sus valores predeterminados, en algún lugar de un archivo de configuración. – Salaros

Respuesta

20

Suele ser el caso cuando la resolución de nombres no funciona en el host. Si su destino de conexión es siempre el mismo, es posible que desee utilizar su dirección IP para conectarse.

+0

Lo comprobaré y le dejaré saber :))) – Malloc

+0

hombre impresionante, usted salvó mi día –

+0

Wow, tan simple como esto, puede resolver el problema. ¡¡Gracias!! – coolcool1994

7

Si utiliza este código:

$Mysqli= new mysqli('mysql2.servidoreswindows.net:3306', 
        'usu', 'pass', 'dbname'); 

se puede tratar de escribir host sin puerto

Eso es:

$Mysqli= new mysqli('mysql2.servidoreswindows.net', 'usu', 'pass', 'dbname'); 
+0

Estaba usando la fábrica Zend Db y array ('host' => "host: port") nunca funcionó, sin embargo array ('host' => "host", 'port' => "port") funcionó muy bien porque http : //php.net/manual/en/mysqli.construct.php requiere el puerto como un argumento separado. – user3338098

2

Sé que esto es una cuestión de edad. Pero me encontré con este mismo problema hoy, y ninguna de las respuestas que encontré fue la correcta.

El problema en mi caso fue que el puerto 3306 no está abierto en nuestro firewall, y estaba intentando conectarme a una base de datos mysql interna desde un servidor externo.

No estoy seguro de por qué el error que le da es "host desconocido" en este caso. Hubiera esperado algo más como "No se puede conectar". o "Conexión rechazada", pero usar exactamente el mismo código de un servidor interno funcionó bien, llevándome a esta conclusión.

+0

Conectando desde el cliente mysql, si hay algún problema de conexión, se informará una excepción de dirección desconocida. – samuel

5

favor, preste atención a los grupos de seguridad de AWS:

En mi caso puedo conectar con RDS de mi Telnet tiro ordenador y puedo conectar un tiro MySQL Workbench también, pero no puedo conectar desde mi instancia EC2 que está dentro de la misma VPC que el RDS.

La solución fue:
1. He creado un grupo de seguridad (exampl1) para RDS y se le asigna.
2. He creado un grupo de seguridad (ejemplo2) para EC2 y se le ha asignado.
y he asignado el grupo de seguridad RDS (ejempl1) al EC2 también. < < esto me salva.

Información: Si su EC2 ha asignado 2 o más grupos de seguridad, entonces en el grupo de seguridad RDS la fuente de entrada debe crear reglas ya que muchos grupos de seguridad tienen su EC2 asignado.

Amazon docs dice:
La instancia de EC2 en las VPC comparte el mismo grupo de seguridad VPC con el DB de instancia. http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.RDSSecurityGroups.html

Pasé todo el día buscando documentos.
Espero que esto te ayude.

0

Asegúrese de no incluir la parte "http: //". Estaba usando http://example.com en mi archivo .env. Cuando lo dejé como example.com funcionó.

Cuestiones relacionadas