Esta resposta foi editada várias vezes com base em novas informações fornecidas pelo OP
O root é realmente permitido para se conectar ao servidor a partir do host do qual você está se conectando? Se a string de erro estiver retornando o nome canônico do servidor, há uma boa chance de que 'localhost' não esteja apontando para 127.0.0.1 :
Isso deve ecoar algo como "Acesso negado para usuário 'root'@localhost'", não o nome do servidor.
Tentar:
$con = mysql_connect("127.0.0.1","root","pass");
Editar (Depois de mais informações fornecidas nos comentários)
Se você estiver se conectando de um host totalmente diferente, informe ao MySQL
[email protected]_hostname_or_ip
tem permissão para se conectar e tem privilégios apropriados para criar um banco de dados e usuários. Você pode fazer isso facilmente usando phpmyadmin (no servidor MySQL) ou uma 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 ;
Eu aconselharia não nomear este usuário como 'root' , apenas crie um usuário com todos os privilégios globais necessários. No exemplo, usei 192.168.1.1, que poderia facilmente ser um nome de host, apenas certifique-se de que o DNS esteja configurado adequadamente. Especifique o host para corresponder exatamente como aparece nos logs quando você se conecta ao servidor remoto.
Você também pode querer ajustar os limites a gosto. Mais informações sobre o
CREATE USER
a sintaxe pode ser encontrada aqui
, GRANT
aqui
. Editar
Se estiver usando MySQL 4 - CREATE não é uma opção. Você usaria apenas GRANT (4.1 Docs On User Management )
Editar
Se estiver usando o C-Panel, apenas usar a API . Embora sim, ele tem suas peculiaridades, é mais fácil manter coisas que o usam em vez de soluções ad-hoc. Muitos aplicativos bem-sucedidos o usam sem problemas. Como qualquer outra API, você precisa ficar por dentro das mudanças ao usá-la.