"Error de conexión: acceso denegado para el usuario 'root'@'localhost' (usando contraseña: SÍ)" desde la función php [duplicado]

Resuelto gc5 asked hace 54 años • 11 respuestas

Escribí alguna función utilizada por una página web php para interactuar con una base de datos mysql. Cuando los pruebo en mi servidor me sale este error:

"Connect failed: Access denied for user 'root'@'localhost' (using password: YES)" 

Puedo usarlos en mi PC (usando XAMPP) y puedo navegar por las tablas de la base de datos usando la línea de comando en el servidor. Sin embargo, la página web no logra conectarse. Revisé la contraseña pero no obtuve resultados. Es correcto (de lo contrario no podría iniciar sesión en mysql desde la línea de comando).

La llamada de la función es la siguiente:

$conn = new mysqli("localhost", "root", "password", "shop");

¿Tengo que configurar algo en mi servidor? Gracias

Editar: PHP versión 5.3.3-7+squeeze1 versión mysql: 5.1.49-3 ambos en Debian

gc5 avatar Jan 01 '70 08:01 gc5
Aceptado

Lo resolví de esta manera: inicié sesión con el nombre de usuario root

mysql -u root -p -h localhost

Creé un nuevo usuario con

CREATE USER 'francesco'@'localhost' IDENTIFIED BY 'some_pass';

luego creé la base de datos

CREATE DATABASE shop;

Otorgué privilegios para un nuevo usuario para esta base de datos.

GRANT ALL PRIVILEGES ON shop.* TO 'francesco'@'localhost';

Luego me desconecté de root e inicié sesión como nuevo usuario.

quit;
mysql -u francesco -p -h localhost

Reconstruí mi base de datos usando un script

source shop.sql;

Y listo.. Ahora desde php funciona sin problemas con la llamada

 $conn = new mysqli("localhost", "francesco", "some_pass", "shop");

Gracias a todos por su tiempo :)

gc5 avatar Jun 23 '2011 12:06 gc5

¿Existe una entrada de cuenta de usuario en la base de datos para root@localhost? En MySQL puedes configurar diferentes permisos de cuenta de usuario por host. Podría haber varias cuentas diferentes con el mismo nombre combinado con el host desde el que se conectan. Los más comunes son [email protected] y root@localhost. Estos pueden tener diferentes contraseñas y permisos. Asegúrese de que root@localhost exista y tenga la configuración esperada.

Estoy dispuesto a apostar, según su explicación, a que este es el problema. La conexión desde otra PC usa una cuenta diferente a root@localhost y creo que la línea de comando se conecta usando [email protected] .

queso avatar Jun 22 '2011 19:06 queso