Esta respuesta ha sido editada en base a la nueva información proporcionada por el PO
es root realidad permitió a conectar con el servidor del host que se conecta desde? Si la cadena de error se devuelve el nombre canónico del servidor, hay una gran probabilidad de que 'localhost' no está apuntando a 127.0.0.1:
"Acceso denegado para el usuario 'root'@'MY.SERVER .HOST.NAME' a base de datos 'dbname'"
Eso debería repetir algo así como "Acceso denegado para el usuario 'root' @ localhost'", no el nombre del servidor.
Probar:
$con = mysql_connect("127.0.0.1","root","pass");
Editar (Después de más información proporcionada en los comentarios)
Si se está conectando desde un host totalmente diferente, usted tiene que decir a MySQL [email protected]_hostname_or_ip
se le permite conectarse y tiene los privilegios apropiados para crear una base de datos y usuarios.
Usted puede hacer esto con bastante facilidad utilizando 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 ;
Yo aconsejaría no nombrar a este usuario 'root', basta con crear un usuario con toda la 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 DNS esté configurado apropiadamente. Especifique el host para que coincida con exactamente tal como aparece en los registros cuando se conecta al servidor remoto.
Es posible que también desee ajustar los límites al gusto. Más información sobre la sintaxis CREATE USER
puede ser found here, GRANT
here.
Editar
Si el uso de MySQL 4 - crear no es una opción. Usted sólo tiene que utilizar GRANT (4.1 Docs On User Management)
Editar
Si se utiliza C-Panel, simplemente use the API. Mientras que sí, tiene sus peculiaridades, es más fácil mantener cosas que lo usan en lugar de soluciones de trabajo ad-hoc. Muchas aplicaciones exitosas lo usan sin problemas. Al igual que cualquier otra API, debe estar al tanto de los cambios al usarla.
Recién notado, copié mi código incorrectamente arriba. Esta secuencia de comandos se está ejecutando en 1 servidor y tratando de instalar la base de datos en otra, por lo que no se está conectando a localhost de todos modos – robjmills
@snaken - Actualicé mi respuesta –
en caso de que hubiera un problema con el usuario. Quité al usuario e intenté recrearlos con su código pero obtengo un error de sintaxis? – robjmills