"Error de conexión: acceso denegado para el usuario 'root'@'localhost' (usando contraseña: SÍ)" desde la función php [duplicado]
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
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 :)
¿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] .