Foros del Web » Programando para Internet » PHP »

Mysql me rechaza el usuario

Estas en el tema de Mysql me rechaza el usuario en el foro de PHP en Foros del Web. Buenos días a todos. Siento mucho que mi primer post en este foro sea ya por dudas, pero agradecería que me echaran una mano. Por ...
  #1 (permalink)  
Antiguo 02/03/2012, 05:56
Avatar de kurekshikam  
Fecha de Ingreso: marzo-2012
Ubicación: En casa
Mensajes: 13
Antigüedad: 12 años, 1 mes
Puntos: 0
Pregunta Mysql me rechaza el usuario

Buenos días a todos. Siento mucho que mi primer post en este foro sea ya por dudas, pero agradecería que me echaran una mano. Por cierto, para todos los que lean esto, buen foro, siempre me ha quitado de los apuros al programar.

Bien ahora a mi duda. Puede que sea que hoy estoy yo un poco "tonto" por que el error que tengo es el siguiente:
Código:
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'resal'@'localhost' (using password: YES) in C:\xampp\htdocs\resal\functions\mysql.connect.php on line 4
Si, ya sé lo que estais pensando... Un noob más por aquí, que no se sabe ni logear en el MYSQL. Puede que si sea nuevo, pero no es que sea mi primer contacto con mysql y mucho menos con la programación, solo es que no encuentro el fallo.

Bien, tras tener instalado el XAMPP en mi Netbook desde hace tiempo, hoy lo he vuelto a usar para un proyecto para implementar una mejora al servidor de mi residencia y como no, para empezar con la pierna izquieda ya tengo problemas con la depuración de la conexión con la base de datos.

Intentaré explicar como he distribuido los archivos para conectarme. Soy una persona que intenta reutilizar todo el código posible, por ello cree una carpeta en el root de este proyecto una carpeta llamada "functions" y dentro tengo tres archivos, de los cuales solo uso dos para esto: "mysql.data.php"y "mysql.connect.php". Además tengo en esa carpeta un cuarto archivo para configuracion del apache, el .htaccess y contiene lo siguiente:
Código:
Order deny,allow
Deny from all
allow localhost
Continuo explicando, en el root tengo un archivo llamado list.php, que cuando es llamado tendría que crear una tabla en HTML con todo lo que tenga una tabla del MYSQL, pero aún no estoy con eso, estaba aún con el inicio intentando conectar PHP con MYSQL. Ahora pondré el código de cada archivo.

list.php -> El que ejecuta todos los demás
Código PHP:
<?php
require('functions/mysql.data.php');
require(
'functions/mysql.connect.php');
require(
"functions/read.list.php"); #Archivo que hice referencia antes, pero no lo uso.
mysql_connect_db($dbserver$dbusername$dbpassword$dbname);
?>
mysql.data.php
Código PHP:
<?php
$dbserver
="127.0.0.1";
$dbusername="resal";
$dbpassword="****";  #Oculta por seguridad, lo siento, pero puedo asegurar que esta bien escrita, copie esta contraseña al portapapeles y la pegué aquí y en el campo contraseña al crear el usuario "resal".
$dbname="resal";
$dbprefix="resal_00_";
?>
mysql.connect.php
Código PHP:
<?php
function mysql_connect_db($server$username$password$dbname) {
    
mysql_connect($server,$username,$password);
    
mysql_select_db($dbname);
    }
?>
Bien hata aquí todo mi problema, pero antes de finalizar y para aumentar mi sorpresa y probablemente la de todos, hice una prueba más cambie la3º linea de "mysql.connect.php" para que se logeara como root, quedando como la siguiente:
Código PHP:
mysql_connect($server,root
Pues va el servidor mysql y se conecta... Me quedé anonadado. Por si acaso era un error del servidor que aún no le creo la entrada del usuario probé a borrarlo y volver a añadirlo, claro que no sirvió para nada, tampoco reiniciar el servidor ni reiniciar el Netbook.

Llegados hasta este punto y con ganas de aporrear a MYSQL, hice acopio de mi fuerza de voluntad, y recurro a vosotros, con la esperanza de que puedan ayudarme tal y como ya tantos post que he leído de aquí me ayudaron con anterioridad, pero esta vez preguntando yo.

Bueno siento el post tan largo pero me gusta explicar bien las cosas y seguro que algo aún se entiende mal, pero bueno intente que estuviese claro.

Última edición por kurekshikam; 02/03/2012 a las 06:16
  #2 (permalink)  
Antiguo 02/03/2012, 06:25
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Mysql me rechaza el usuario

Código PHP:
Ver original
  1. mysql_connect($server,root)
esto debería darte error de sintaxis. En determinadas circunstancias mysql puede conectarse sin contraseña (lo que pasó al modificar la linea 3). Casi seguro tienes mal la constraseña. Imprime el código de error con mysql_errno() a ver qué averiguas. Por si acaso revisa la directiva bind_server o o similar de my.cnf.
Saludos
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 02/03/2012, 06:26
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
Respuesta: Mysql me rechaza el usuario

Buenas, ¿y no puede ser que ese usuario no tenga permisos?

  #4 (permalink)  
Antiguo 02/03/2012, 07:20
Avatar de kurekshikam  
Fecha de Ingreso: marzo-2012
Ubicación: En casa
Mensajes: 13
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Mysql me rechaza el usuario



Creo que los permisos si los tiene... al menos cuando cree el usuario le di a agregar una base de datos con su nombre y darle todos los permisos en ella, y ademas le di a Marcas Todos en el apartado de privilegios globales.

P.D: Gracias por tu respuesta.
  #5 (permalink)  
Antiguo 02/03/2012, 07:34
Avatar de kurekshikam  
Fecha de Ingreso: marzo-2012
Ubicación: En casa
Mensajes: 13
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Mysql me rechaza el usuario

Cita:
Iniciado por repara2 Ver Mensaje
Código PHP:
Ver original
  1. mysql_connect($server,root)
esto debería darte error de sintaxis. En determinadas circunstancias mysql puede conectarse sin contraseña (lo que pasó al modificar la linea 3). Casi seguro tienes mal la constraseña. Imprime el código de error con mysql_errno() a ver qué averiguas. Por si acaso revisa la directiva bind_server o o similar de my.cnf.
Saludos
Mea culpa! El código esta bien... no lo arreglo el post por que ya no me deja editarlo, la línea correcta es:
Código PHP:
mysql_connect($server,'root'
Además... con ese ejemplo quería demostrar que mi servidor esta activado y funcionando pues me deja entrar como root pero no me deja entrar como los usuarios que yo creo.

La directiva bind_server no la he encontrado, por la contra encontre esta: bind-address="127.0.0.1" tenía una almohadilla delante y la he quitado. Todo sigue igual.

En cuanto al mysql_errno, que lo difiere del mysql_error? Me sigue soltanto el mismo error.

En cuanto sin contraseña, esta especificado que la necesita para logearse, pero aún así intente logearme sin contraseña, pero aunque no dea error al logearse si da error al acceder a la base de datos. Da este error:
Código:
Access denied for user ''@'localhost' to database 'resal'
Por lo tanto deduzco que al no ponerme el usuario, la conexión a mysql falló pero no me dio error en la conexión.

P.D: Perdón por el repost.
  #6 (permalink)  
Antiguo 02/03/2012, 12:13
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Mysql me rechaza el usuario

Además... con ese ejemplo quería demostrar que mi servidor esta activado y funcionando pues me deja entrar como root pero no me deja entrar como los usuarios que yo creo. tal como te comentaba, en determinadas circunstancias te puedes loguear sin password en local, dependiendo de la configuración de my.cnf, por tanto este punto descartado, aún puede ser la contraseña.
pero aunque no dea error al logearse si da error al acceder a la base de datos. cuál es la diferencia entre una cosa y la otra?. En principio, "acceder" a la base de datos es el equivalente a la sentencia USE, no creo que haya permisos especiales para ese comando. EL mensaje de error es claro.

La directiva bind_server no la he encontrado, por la contra encontre esta: bind-address="127.0.0.1" tenía una almohadilla delante y la he quitado. Todo sigue igual. esta directiva es para permitir la conexión desde clientes remotos, puedes dejarlo como estaba, no es tu caso.

Siguiendo con el tema, veo que utilizas una GUI, asegúrate que estás creando los usuarios en la db correspondiente, la imagen que muestras no es suficiente, el usuario tiene que tener permisos para esa Db y servidor.
A veces es necesario usar la sentencia FLUSH PRIVILEGES, consulta el manual.



En cuanto al mysql_errno, que lo difiere del mysql_error? Me sigue soltanto el mismo error.
una te de el código de error, la otra el mensaje. Con el código puede buscar directamente en el manual de mysql el error exacto con detalles.
__________________
Fere libenter homines, id quod volunt, credunt.
  #7 (permalink)  
Antiguo 03/03/2012, 07:32
Avatar de kurekshikam  
Fecha de Ingreso: marzo-2012
Ubicación: En casa
Mensajes: 13
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Mysql me rechaza el usuario

Código:
+---------------------------------------------------------------------------------------------------------------------------------
| Grants for resal@%
+---------------------------------------------------------------------------------------------------------------------------------
| GRANT ALL PRIVILEGES ON *.* TO 'resal'@'%' IDENTIFIED BY PASSWORD '{codigo_de_la_contraseña}'
+---------------------------------------------------------------------------------------------------------------------------------
1 row in set (0.00 sec)
Código:
+----------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost                                                                                                              |
+----------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD 'codigo_de_la_contraseña}' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION                                                                           |
+----------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
Bien, ya descubri el error donde estaba, gracias "repara2" me encendiste la bombilla de las ideas.
Si, la verdad uso phpmyadmin como gui de mysql, me parece que para modificar tablas y bases de datos me lo hace más intuitivo que la consola de windows, aunque tampoco tendría problema para andar con ella, así fue como me conecte sin la gui, es decir, con la consola a mysql y ahí descubri que tampoco me dejaba conectarme con mi usuario "resal" así que entre como root y vi que en la tablas de los usuarios existia un usuario llamado "resal" y todo estaba en orden, pero no me dejaba conectarme tras hacer un "SHOW GRANTS;" y un "SHOW GRANTS for resal", obtuve las repuestas que arriba figuran, así que note que habia una 2 diferencias respeto a root, una era con los permisos de GRANT PROXY y el otro era que no tenia al final con "...WITH GRANT OPTION", busque en el manual las sentecian de GRANT y le di permisos a resal (tras borrarlo primero con "DROP USER resal" y volver a crearlo con "CREATE USER resal"), ahora ya se puede conectar desde la consola e incluso desde PHP. Aunque por la contra creo que me pase un poco poniendo al usuario "resal" a la altura de root . No creo que sea bueno tenerlo así, tendre que ir provando a restarle privilegios y ver si sigue funcionando.

En cuanto a lo de FLUSH PRIVILEGES, fue lo primero que intente tras leer tu respuesta, pero no me funciono.

Bueno... gracias por la ayuda y a la próxima en vez de confiar tan ciegamente en la gui vere los permisos cuando no me deje hacer las cosas en la consola...
  #8 (permalink)  
Antiguo 03/03/2012, 09:04
 
Fecha de Ingreso: junio-2009
Mensajes: 101
Antigüedad: 14 años, 10 meses
Puntos: 13
Respuesta: Mysql me rechaza el usuario

Código PHP:
mysql_connect ($dbserver$dbusername$dbpassword);
mysql_select_db($dbname); 
  #9 (permalink)  
Antiguo 03/03/2012, 10:01
 
Fecha de Ingreso: agosto-2011
Ubicación: la paz
Mensajes: 83
Antigüedad: 12 años, 8 meses
Puntos: 4
Respuesta: Mysql me rechaza el usuario

mysql_connect($server)
nada mas
  #10 (permalink)  
Antiguo 05/03/2012, 11:48
Avatar de kurekshikam  
Fecha de Ingreso: marzo-2012
Ubicación: En casa
Mensajes: 13
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Mysql me rechaza el usuario

Código PHP:
mysql_connect ($dbserver$dbusername$dbpassword); 
mysql_select_db($dbname); 
si, esa es la construcción para conectarse... puedes darte cuenta de que así lo había puesto

Código PHP:
mysql_connect($server)
#nada mas 
No, no y no...
Ese es un login anonimo y no tienes los permisos, bueeeno... salvo suponiendo que tengas permisos de root al anonimo, por lo que... falla de seguridad (Ni siquiera se si esto es posible y no voy a crear siquiera esa falla para probarlo.)

De todas formas, como he dicho, el error esta solucionado... Igualmente gracias por las respuestas

Etiquetas: mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:44.