Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: mokoMonster en 13 Octubre 2009, 04:36 am



Título: MySQL: Ayuda para encontrar el error que tengo.
Publicado por: mokoMonster en 13 Octubre 2009, 04:36 am
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


Título: Re: MySQL: Ayuda para encontrar el error que tengo.
Publicado por: 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


Título: Re: MySQL: Ayuda para encontrar el error que tengo.
Publicado por: Mr. Crowley en 13 Octubre 2009, 14:37 pm
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  ;)


Título: Re: MySQL: Ayuda para encontrar el error que tengo.
Publicado por: Red Mx en 13 Octubre 2009, 14:38 pm
@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.


Título: Re: MySQL: Ayuda para encontrar el error que tengo.
Publicado por: Mr. Crowley en 13 Octubre 2009, 14:47 pm
Hola Red Mx, sorry... pero no entendi esto:

el server necesita permitirse asi mismo conectarse a su server

El server de 260 debe permitirle conectar a su server de mysql? Es eso?


Título: Re: MySQL: Ayuda para encontrar el error que tengo.
Publicado por: ^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.




Título: Re: MySQL: Ayuda para encontrar el error que tengo.
Publicado por: mokoMonster en 13 Octubre 2009, 18:43 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




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


Título: Re: MySQL: Ayuda para encontrar el error que tengo.
Publicado por: Mr. Crowley en 13 Octubre 2009, 19:01 pm
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.


Título: Re: MySQL: Ayuda para encontrar el error que tengo.
Publicado por: ^Tifa^ en 13 Octubre 2009, 19:28 pm
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.

Citar
Ahora, 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.

Citar
3)Como podria verificar esto??

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

Citar
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)

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.


Título: Re: MySQL: Ayuda para encontrar el error que tengo.
Publicado por: mokoMonster en 13 Octubre 2009, 19:39 pm
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)


Título: Re: MySQL: Ayuda para encontrar el error que tengo.
Publicado por: ^Tifa^ en 13 Octubre 2009, 19:50 pm
No corazon.... la linea referente a 'bash-3.1$' va excluida.....

'bash-3.1$' hace referencia al prompt de la terminal ... vendria ocupando el mismo lugar que tu:

C:\Users\HR\Desktop>

La palabra 'bash-3.1$'  obviala, todo lo demas si puedes probarlo (Todo lo que sea referente a un comando).

Jamas tendras acceso con el usuario 'admin' ese usuario existe en my base de datos, no en la tuya, para ver que usuarios existen en tu base de datos por eso usaras la consulta:

select user from mysql.user;


Título: Re: MySQL: Ayuda para encontrar el error que tengo.
Publicado por: mokoMonster en 13 Octubre 2009, 19:52 pm
hahah duuuh que torpe soi hahah xD
bueno, lo intentare, y ahora posteo
xD
Gracias :D


Título: Re: MySQL: Ayuda para encontrar el error que tengo.
Publicado por: mokoMonster en 13 Octubre 2009, 19:56 pm
Oye, pero desde la primera linea, no me deja ingresar con admin@localhost :(


Título: Re: MySQL: Ayuda para encontrar el error que tengo.
Publicado por: ^Tifa^ en 13 Octubre 2009, 20:17 pm
Chiquito, no, no 'admin' no existe en tu base de datos. Existe en la mia, es un usuario correspondiente a mi base de datos, tu vas a realizar el mismo proceso que yo pero con tus usuarios de tu base de datos. Sustituyendo a 'admin' por el 'root' de tu base de datos, y la IP del host del usuario 'pepe' por el IP de la tarjeta de red de tu PC personal   ;)


Título: Re: MySQL: Ayuda para encontrar el error que tengo.
Publicado por: mokoMonster en 13 Octubre 2009, 20:20 pm
Ay me hablas mas bonito que mi novia :D aparte se me hace muy sexy una chava informatica xD y mas si me llama Chiquito haha xD
tomalo solo como un cumplido.
Pues tengo buenas noticias http://mkmnstr.netai.net/mkmnstr_db2.php
Mi base de datos ahora ha sido conectada:D

Me recomiendas hacer lo que me dijsite o con esto que conecte es suficiiente?

Saludoss
xD


Título: Re: MySQL: Ayuda para encontrar el error que tengo.
Publicado por: ^Tifa^ en 13 Octubre 2009, 20:27 pm
El ejemplo que te expuse era para que comprendieras un poco mas detalladamente como funcionan los accesos de usuarios en un motor MySQL (tanto remoto como local) y de paso le puede servir de clarificacion a otros usuarios.

Si efectivamente te conectaste a la base de datos felicidades.  ;)  parece que su limitacion no era conexión a la DB.

Por cierto gracias por el cumplido, es un halago muy bonito  :rolleyes: y eres uno de los pocos que reconoce que soy una usuaria  y no asume que soy masculino dicho sea de paso  :xD