Esta respuesta se ha editado varias veces en función de la nueva información proporcionada por el OP
¿Es root realmente permitido? conectarse al servidor desde el host desde el que se está conectando? Si la cadena de error devuelve el nombre canónico del servidor, es muy probable que 'localhost' no apunte a 127.0.0.1:
Eso debería reflejar algo como "Acceso denegado para el usuario 'root'@localhost'", no el nombre del servidor.
Prueba:
$con = mysql_connect("127.0.0.1","root","pass");
Editar (Después de más información proporcionada en los comentarios)
Si se conecta desde un host totalmente diferente, debe informar a MySQL [email protected]_hostname_or_ip
tiene permiso para conectarse y tiene los privilegios apropiados para crear una base de datos y usuarios.
Puede hacer esto fácilmente usando phpmyadmin (en el servidor MySQL) o una consulta como:
CREATE USER 'root'@'192.168.1.1' IDENTIFIED BY PASSWORD 'secret';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'192.168.1.1' IDENTIFIED BY PASSWORD 'secret' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
Aconsejaría no nombrar a este usuario 'root', simplemente cree un usuario con todos los privilegios globales necesarios. En el ejemplo, utilicé 192.168.1.1, que fácilmente podría ser un nombre de host, solo asegúrese de que el DNS esté configurado correctamente. Especifique el host para que coincida exactamente tal como aparece en los registros cuando se conecta al servidor remoto.
También es posible que desee ajustar los límites al gusto. Más información sobre CREATE USER
la sintaxis puede ser encontrada aquí
, GRANT
aquí
.
Editar
Si usa MySQL 4 - CREAR no es una opción. Simplemente usaría GRANT (4.1 Docs On User Management )
Editar
Si usa C-Panel, simplemente usar la API . Si bien sí, tiene sus peculiaridades, es más fácil mantener las cosas que lo usan en lugar de soluciones temporales ad-hoc. Muchas aplicaciones exitosas lo usan sin problemas. Como cualquier otra API, debe estar al tanto de los cambios cuando la usa.