MySQL: Ayuda para encontrar el error que tengo.

Iniciado por mokoMonster, 13 Octubre 2009, 04:36 AM

0 Miembros y 1 Visitante están viendo este tema.

mokoMonster

Bueno te comento que soy nuevo en MySQL, en PHP ya se un poco mas xD
Quiero crear una base de datos y conectarla a mi servidor (260mb.com) maneja MySQL, tengo mi servido MySQL y tengo PHPMyAdmin que no se como manejar.

Tengo MySQL Community Server instalado en mi portatil, mi server mysql es xxxx.269mb.com, entonces intente "mysql -h xxx -u pacus_xxxx -p" y no funciono, intente poniendole "mysql -h xxx -u pacus_xxxx -p xxxxx" y tampoco..

C:\Users\HR>mysql -h localhost -u root -p
Enter password: ********
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.39-community MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement

mysql>

Esto me funciono, pero no estoy seguro de como funcionara esto en mi servidor, o como puedo conectarlo.

Siguiendo un tutorial hice lo siguiente.
http://tutorialphp.net/cap7_1base_de_datos_mysql_crear_base_de_datos_php.php

Subi a mi server prueba.sql

CREATE TABLE prueba (
ID_pacus_xxxxxx_mkmnstr_db int(11) DEFAULT '0' NOT NULL auto_increment,
Nombre varchar(100),
Apellidos varchar(100),
PRIMARY KEY (ID_pacus_xxxxxx_mkmnstr_db),
UNIQUE ID_pacus_xxxxxx_mkmnstr_db (ID_pacus_xxxxxxx_mkmnstr_db)
);


Y tambien subi mkmnstr_db.php con el sig. codigo:

<html>
<head>
   <title>Ejemplo de PHP</title>
</head>
<body>

<?php
function Conectarse()
{
   if (!($link=mysql_connect("localhost","root","")))
   {
      echo "Error conectando a la base de datos.";
      exit();
   }
   if (!mysql_select_db("pacus_xxxxxx_mkmnstr_db",$link))
   {
      echo "Error seleccionando la base de datos.";
      exit();
   }
   return $link;
}

$link=Conectarse();
echo "Conexión con la base de datos conseguida.<br>";

mysql_close($link); //cierra la conexion
?>

</body>
</html>



Pero "Error conectando a la base de datos."
La verdad no entiendo que es lo que estoy haciendo mal.

En el codigo de mkmnstr_db.php intente tambien esto:

   if (!($link=mysql_connect("localhost","root","")))
   if (!($link=mysql_connect("localhost","pacus_xxxx","")))
   if (!($link=mysql_connect("localhost","pacus_xxxx","xxxxxx")))


obviamente una a la vez
y no funciona tampoco.
Espero puedan ayudarme, y de antemano muchas gracias:D
"Se necesitaron unos instantes para cortarle la cabeza, pero se necesitara un siglo para producir otra igual."
Lagrange

Red Mx

#1
Es mas facil si dentro de tu server local haces las cosas que vas a hacer y luego exportas a tu server mysql que esta en 260mb.com.


pero bueno necesitas hacer cambion en my.ini ( archivo de configuracion mysql)

Obiamente necesitas permisos en el server para hacer esto en un hosting compartido puede ser  dificil no todos los provedores te lo permiten.

Aun que si usas Cpanel y tienes un buen provedor puedes acceder a la sección Host de Acceso Remoto a Base de Datos.

Ahi agregas tu IP asi permites conectarte al servidor ( si el servidor se conectara a ti lo tendrias que hacer en tu pc y abrir el puerto para permiitr la conexion pero esa es otra historia)

Saludos
Desarrollar Malware Es Causa De Cancer...

Mr. Crowley

He tenido ese tipo de problemas con los alojamientos gratuitos... yo cambiaria el nombre del server en la conexion (localhost)... coloque ahi la direccion del servidor donde se hospeda la base de datos... puede que le funcione  ;)
Mi blog personal: www.calirojas.com

Red Mx

@Mr. Crowley

Eso es ams que obio pero el el server necesita permitirse asi mismo conectarse a su server  en 260mb.com de otra manera le va denegar la conexion el server.
Desarrollar Malware Es Causa De Cancer...

Mr. Crowley

Hola Red Mx, sorry... pero no entendi esto:

Cita de: Red Mx en 13 Octubre 2009, 14:38 PM
el server necesita permitirse asi mismo conectarse a su server

El server de 260 debe permitirle conectar a su server de mysql? Es eso?
Mi blog personal: www.calirojas.com

^Tifa^

Haber, haber te respondi en otro post que preguntaste lo mismo y obviaste el tema... pero vuelvo y pregunto:

1 - El nombre de dominio '260mb.com' apunta a tu servidor personal? o es un servidor remoto independiente?

2 - Si el dominio '260mb.com' corresponde a tu servidor personal (tuyo propio) haz verificado si el servidor MySQL tiene abierto el puerto tcp 3306 a nivel externo (cuando digo externo me refiero a si esta abierto en tu IP publica de tu tarjeta de red no solamente a nivel localhost) no supongas que porque puedes acceder por 'localhost' es porque tengas abierto el puerto 3306, a nivel localhost MySQL siempre respondera, verificate externamente si dicho puerto 3306 esta o no abierto, en caso que despues de verificarle No este abierto, tendras que editar my.cnf o my.ini si usas Windows, y comentar la linea --skip-networking y reiniciar el motor para aplicar los cambios.

3 - En caso que el dominio '260mb.com' sea en un servidor remoto y por ende asumimos que el motor esta corriendo su puerto abierto a nivel de IP publica, pero aun asi no puedes conectarte desde remoto, verifica cual es el 'host' del usuario pacus, por ejemplo:

1 - pacus@localhost

2 - pacus@%

3 - pacus@IP

Si el host de pacus corresponde al primer ejemplo, pacus solo podra conectarse a nivel localhost no desde remoto. Si el host corresponde al segundo ejemplo pacus puede conectarse desde cualquier PC remota, si el host corresponde al tercer ejemplo pacus solo podra conectarse desde la IP correspondiente asignada.

Si el host de pacus es igual a 'localhost' o 'IP' (Cuando digo IP me refiero a una IP ejemplo 10.0.x.x) esta restringuido solo a conexiones locales o una IP especifica, tendras que hacer un update y cambiarle el host a '%' que implica cualquiera desde donde sea. Luego de la actualizacion (La cual se hace con el usuario 'root' de MySQL u otro que posea permisos similares) hay que actualizar la metadata con flush privileges para que apliquen los cambios.



mokoMonster

Cita de: Red Mx en 13 Octubre 2009, 14:35 PM
Es mas facil si dentro de tu server local haces las cosas que vas a hacer y luego exportas a tu server mysql que esta en 260mb.com.
pero bueno necesitas hacer cambion en my.ini ( archivo de configuracion mysql)
Obiamente necesitas permisos en el server para hacer esto en un hosting compartido puede ser  dificil no todos los provedores te lo permiten.
Aun que si usas Cpanel y tienes un buen provedor puedes acceder a la sección Host de Acceso Remoto a Base de Datos.

Ahi agregas tu IP asi permites conectarte al servidor ( si el servidor se conectara a ti lo tendrias que hacer en tu pc y abrir el puerto para permiitr la conexion pero esa es otra historia)

Saludos

Les comento: La razón por lo que quiero aprender MySQL es porque quiero subir un sitio que estoy construyendo apenas, y 260mb.com es un hosting gratuito, el cual prentendo pagar para tener todos los demas beneficios; ya que ahora lo tengo como gratuito no me es posible conectarme externamente (estuve leyendo las especificaciones de 260mb.com)

Creo que en este punto voy mas con trabajar en localhost y despues subir todo a mi servidor (mientras) pero aqui sigue el problema:

prueba.sql sigue igual:
CREATE TABLE prueba (
ID_pacus_xxxxxx_mkmnstr_db int(11) DEFAULT '0' NOT NULL auto_increment,
Nombre varchar(100),
Apellidos varchar(100),
PRIMARY KEY (ID_pacus_xxxxxx_mkmnstr_db),
UNIQUE ID_pacus_xxxxxx_mkmnstr_db (ID_pacus_xxxxxxx_mkmnstr_db)
);


Ahora, ya que mkmnstr_db.php esta en mi servidor 260mb.com no tiene porque ser localhost, o me equivoco?

<?php
function Conectarse()
{
   if (!($link=mysql_connect("sql10010.260mb.com","pacus_xxxxxx","xxxxxxxx")))
   {
      echo "Error conectando a la base de datos.";
      exit();
   }
   if (!mysql_select_db("pacus_xxxxxx_mkmnstr_db",$link))
   {
      echo "Error seleccionando la base de datos.";
      exit();
   }
   return $link;
}

$link=Conectarse();
echo "Conexión con la base de datos conseguida.<br>";

mysql_close($link); //cierra la conexion
?>


Pero asi tambien me devuelve error: http:/mkmnstr.260mb.com/mkmnstr_db.php

En Cpanel no tengo la opcion Host de Acceso Remoto a Base de Datos.

Y Red Mx y Mr. Crowley: Les comento que el servidor MySQL y el de 260mb.com son practicamente el mismo, ya que 260mb.com me da los 2 servidores; 1) sqlxxx.260mb.com 2) mkmnstr.260mb.com




Cita de: ^TiFa^ en 13 Octubre 2009, 15:19 PM
Haber, haber te respondi en otro post que preguntaste lo mismo y obviaste el tema... pero vuelvo y pregunto:

1 - El nombre de dominio '260mb.com' apunta a tu servidor personal? o es un servidor remoto independiente?

2 - Si el dominio '260mb.com' corresponde a tu servidor personal (tuyo propio) haz verificado si el servidor MySQL tiene abierto el puerto tcp 3306 a nivel externo (cuando digo externo me refiero a si esta abierto en tu IP publica de tu tarjeta de red no solamente a nivel localhost) no supongas que porque puedes acceder por 'localhost' es porque tengas abierto el puerto 3306, a nivel localhost MySQL siempre respondera, verificate externamente si dicho puerto 3306 esta o no abierto, en caso que despues de verificarle No este abierto, tendras que editar my.cnf o my.ini si usas Windows, y comentar la linea --skip-networking y reiniciar el motor para aplicar los cambios.

3 - En caso que el dominio '260mb.com' sea en un servidor remoto y por ende asumimos que el motor esta corriendo su puerto abierto a nivel de IP publica, pero aun asi no puedes conectarte desde remoto, verifica cual es el 'host' del usuario pacus, por ejemplo:

1 - pacus@localhost

2 - pacus@%

3 - pacus@IP

Si el host de pacus corresponde al primer ejemplo, pacus solo podra conectarse a nivel localhost no desde remoto. Si el host corresponde al segundo ejemplo pacus puede conectarse desde cualquier PC remota, si el host corresponde al tercer ejemplo pacus solo podra conectarse desde la IP correspondiente asignada.

Si el host de pacus es igual a 'localhost' o 'IP' (Cuando digo IP me refiero a una IP ejemplo 10.0.x.x) esta restringuido solo a conexiones locales o una IP especifica, tendras que hacer un update y cambiarle el host a '%' que implica cualquiera desde donde sea. Luego de la actualizacion (La cual se hace con el usuario 'root' de MySQL u otro que posea permisos similares) hay que actualizar la metadata con flush privileges para que apliquen los cambios.

Tifa:
He hecho el otro post porque llevo ya 4 dias estancado y necesitaba un poco mas de ayuda ..

Respuestas:
1)Si con servidor personal te refieres a mkmnstr.260mb.com; entonces si.
2)En my.ini no existe la linea "--skip-networking" pueden bajarlo en http://mkmnstr.260mb.com/my.zip (no tienen virus, troyano, ni nada de eso)
3)Como podria verificar esto??

Bueno pues muchisimas gracias a todos por responer a este post, espero puedan seguir ayudandome con este problemita.
Saludos y Buena Vibra
"Se necesitaron unos instantes para cortarle la cabeza, pero se necesitara un siglo para producir otra igual."
Lagrange

Mr. Crowley

En caso de que no le importe el hosting, puede hacer una cuenta en http://host22.com/.
Hace un tiempo estuve probando algunas cosas ahi, y este si permite conexion remota.
Mi blog personal: www.calirojas.com

^Tifa^

Entonces tu limitacion es que no puedes conectarte remotamente al motor MySQL?  :-\  que pena, pero de alguna forma deben obligar a los usuarios a pagar.

CitarAhora, ya que mkmnstr_db.php esta en mi servidor 260mb.com no tiene porque ser localhost, o me equivoco?

En este punto depende de muchos factores, desconozco que configuracion le otorgaron finalmente alli al servidor y a MySQL. Pero dejame explicarte algo, MySQL maneja los accesos y permisos de la siguiente manera. Ya que tienes MySQL instalado en tu PC personal y accesas como root del MySQL haz lo siguiente:

Citar

bash-3.1$ mysql -h 127.0.0.1 -u admin -p
Enter password:                         
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9                           
Server version: 5.0.84 Source distribution               

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select host, user from mysql.user;
+-----------+--------+
| host      | user   |
+-----------+--------+
| %         | marian |
| 10.0.2.15 | marian |
| localhost | admin  |
+-----------+--------+
3 rows in set (0.00 sec)

mysql> create user pepe identified by 'pepe';
Query OK, 0 rows affected (0.01 sec)

mysql> select host, user from mysql.user;
+-----------+--------+
| host      | user   |
+-----------+--------+
| %         | marian |
| %         | pepe   |
| 10.0.2.15 | marian |
| localhost | admin  |
+-----------+--------+
4 rows in set (0.00 sec)

mysql> exit
Bye..
bash-3.1$
bash-3.1$ mysql -h localhost -u pepe -ppepe
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 5.0.84 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.00 sec)

mysql> exit
Bye
bash-3.1$


Puedes ver que se creo un usuario llamado 'pepe' y por defecto su 'Host' es '%' que implica cualquier IP y desde donde sea... ahora haz lo siguiente:

Citar

bash-3.1$ mysql -h localhost -u admin -p
Enter password:                         
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11                           
Server version: 5.0.84 Source distribution               

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select host, user from mysql.user;
+-----------+--------+                   
| host      | user   |                   
+-----------+--------+
| %         | marian |
| %         | pepe   |
| 10.0.2.15 | marian |
| localhost | admin  |
+-----------+--------+
4 rows in set (0.00 sec)

mysql> update mysql.user set host = '10.0.2.15' where user = 'pepe';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> select host, user from mysql.user;
+-----------+--------+
| host      | user   |
+-----------+--------+
| %         | marian |
| 10.0.2.15 | marian |
| 10.0.2.15 | pepe   |
| localhost | admin  |
+-----------+--------+
4 rows in set (0.00 sec)

mysql> quitmysql> quit
Bye
bash-3.1$ mysql -h localhost -u pepe -ppepe
ERROR 1045 (28000): Access denied for user 'pepe'@'localhost' (using password: YES)
bash-3.1$ mysql -h 127.0.0.1 -u pepe -ppepe
ERROR 1045 (28000): Access denied for user 'pepe'@'localhost' (using password: YES)
bash-3.1$ mysql -h 10.0.2.15 -u pepe -ppepe
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 5.0.84 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.00 sec)

mysql> exit
Bye
bash-3.1$

Con lo anterior lo que intento explicarte es, que el acceso remoto o local a un motor MYSQL estara basado en base a que 'Host' tiene dicho usuario en cuestion. Por ende, independientemente que indiques en tu configuracion PHP que el servidor MySQL sea 'localhost' y subas tus scripts php al servidor 260mb.com y realmente esten todos alli 'localhost' si tu usuario 'pacus_xxx' no tiene como 'Host' localhost o el target global % me temo que no podras acceder a esa base de datos.

;)  Espero que se pueda entender, no soy muy efectiva explicando.

Citar3)Como podria verificar esto??

mysql> select host, user from mysql.user where user = 'usuario';

Citar2)En my.ini no existe la linea "--skip-networking" pueden bajarlo en http://mkmnstr.260mb.com/my.zip (no tienen virus, troyano, ni nada de eso)

Tranquilo, si tus scripts php se pueden conectar a Mysql local de tu PC, es porque efectivamente este parametro no esta especificado en el my.ini  ;)

Y como ultimo consejo, haz lo que dice Mr.Crowley, buscate otro hosting gratuito muchos permiten conexiones remotas a MySQL.

mokoMonster

#9
Desde la primera linea hubi error:

C:\Users\HR\Desktop>bash-3.1$ mysql -h 127.0.0.1 -u admin -p
"bash-3.1$" no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.

Aqui intente con varios pass por si yo estaba mal... pero nop

C:\Users\HR\Desktop>mysql -h 127.0.0.1 -u admin -p
Enter password: ********
ERROR 1045 (28000): Access denied for user 'admin'@'localhost' (using password:
YES)

C:\Users\HR\Desktop>mysql -h 127.0.0.1 -u admin -p
Enter password: *******
ERROR 1045 (28000): Access denied for user 'admin'@'localhost' (using password:
YES)

C:\Users\HR\Desktop>mysql -h 127.0.0.1 -u admin -p
Enter password: ******
ERROR 1045 (28000): Access denied for user 'admin'@'localhost' (using password:
YES)

C:\Users\HR\Desktop>mysql 127.0.0.1 -u admin -p
Enter password: ********
ERROR 1045 (28000): Access denied for user 'admin'@'localhost' (using password:
YES)
"Se necesitaron unos instantes para cortarle la cabeza, pero se necesitara un siglo para producir otra igual."
Lagrange