Solución:
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 cerré la sesión 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 eso es todo .. Ahora desde php funciona sin problemas con la llamada
$conn = new mysqli("localhost", "francesco", "some_pass", "shop");
Gracias a todos por su tiempo 🙂
¿Hay una entrada de cuenta de usuario en la base de datos para [email protected]? En MySQL puede establecer diferentes permisos de cuenta de usuario por host. Puede haber varias cuentas diferentes con el mismo nombre combinadas con el host desde el que se están conectando. Los mas comunes son [email protected] y [email protected] Estos pueden tener diferentes contraseñas y permisos. Asegurarse [email protected] existe y tiene la configuración que espera.
Estoy dispuesto a apostar, según su explicación, a que ese es el problema. La conexión desde otra PC utiliza una cuenta diferente a la [email protected] y la línea de comando creo que se conecta usando [email protected]
Por lo que ha dicho hasta ahora, parece un problema en el que el controlador MySQL en PHP5.3 tiene problemas para conectarse a la versión anterior de MySQL 4.1. Eche un vistazo a http://www.bitshop.com/Blogs/tabid/95/EntryId/67/PHP-mysqlnd-cannot-connect-to-MySQL-4-1-using-old-authentication.aspx
Hay una pregunta similar aquí con algunas respuestas útiles, No se puede conectar a MySQL 4.1+ usando autenticación antigua
SELECT `User`, `Host`, Length(`Password`) FROM mysql.user
Esto devolverá 16 para cuentas con contraseñas antiguas y 41 para cuentas con contraseñas nuevas (y 0 para cuentas sin contraseña, es posible que también desee encargarse de ellas). Utilice las herramientas de gestión de usuarios del front-end de MySQL (si las hay) o
SET PASSWORD FOR 'User'@'Host'=PASSWORD('yourpassword');
FLUSH Privileges