Na máquina host do MySQL (que presumo que esteja rodando o Ubuntu, com base na sua mensagem de erro), tente executar este comando:
sudo netstat -lntp | grep 3306
Você deve ver o daemon mysqld
em execução. Caso contrário, o problema pode ser que o daemon do MySQL da máquina não esteja em execução. Eu acho que o comando no Ubuntu é /etc/init.d/mysql start
run como root, que irá iniciar o daemon se ele não estiver rodando. (Eu não uso o Ubuntu, mas é isso que uma pesquisa no google traz. No Arch ele é rc.d start mysqld
mas ele não se traduz exatamente no Ubuntu).
Se esse não for o problema, ou seja, o daemon está sendo executado na máquina host, o problema pode ser que o firewall não esteja configurado corretamente e que a porta não esteja aberta. Tente este comando para ver se a porta está aberta ( ambos os comandos são executados na máquina host executando o MySQL, não em sua máquina local onde você está usando PHP)
nmap -v -sT localhost
Se você não vê 3306
listado como aberto e a máquina está usando iptables
como firewall, este comando deve abrir essa porta
iptables -I INPUT -p tcp --dport 3306 -d host.machine.ip.address -s your.machine.ip.address -j ACCEPT
que deve permitir que sua máquina cliente (a que executa mysql_connect()
, mesmo que não deva), acesse a máquina host do MySQL.
Além disso, como mencionei no meu comentário (sugestão de chapéu para RikudoSennin para isso): Por favor, não use mysql_*
funções para novo código. Eles não são mais mantidos e a comunidade iniciou o processo de descontinuação . Veja a caixa vermelha ? Em vez disso, você deve conhecer as declarações preparadas e usar PDO ou MySQLi . Se você não pode decidir qual, este artigo irá ajudá-lo. Se você gosta de aprender, aqui está um bom tutorial de PDO .
EDIT: Depois de mais algumas pesquisas on-line, vejo que outro usuário no ServerFault respondeu a este problema com dois dos três comandos que propus, então estou ligando para essa questão, uma vez que pode ser relevante.