Você abre uma porta com um programa. O sistema operacional fornece primitivas para você fazer isso, o que geralmente é feito no nível do sistema operacional para permitir que a porta aceite conexões. Para isso, você pode precisar configurar o firewall ou mesmo o SELinux, dependendo da sua instalação (mesmo que eu não tenha visto a instalação padrão do Ubuntu trazendo nada disso). @ Andrea salientou que você não precisa de permissão especial para o programa se quiser abrir a porta. Novamente, este é um programa, um servidor, que estará escutando em uma porta. Qualquer comunicação de rede, usando o protocolo orientado a conexões (como o TCP / IP), precisa de uma porta do servidor de escuta e de um cliente de conexão. Eu não sei Heroku, mas eu acho que pela aparência do comando que você postou, você está tentando migrar um banco de dados de um lugar para outro. Isso depende se você abrir duas conexões, uma para extrair os dados e outra para gravar. Se você pretende receber conexões da Internet, precisará de uma porta em um IP público, que chega à porta 5000 de sua máquina servidora. Se você acha que tem uma instalação correta, tente este comando:
sudo netstat -tnlp
Deve ser algo como esta saída:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 940/sshd
Este é o caso, para um servidor SSH, escutando na porta 22. Você deve ter algo semelhante, para a porta 5000. Nesse caso, tente conectar-se da sua rede interna ao IP do servidor e, em seguida, descubra como abri-lo na Internet. Você pode fazer isso com o comando telnet:
$ telnet 192.168.1.1 22
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
SSH-2.0-OpenSSH_5.8p1 Debian-7ubuntu1
^\
Connection closed by foreign host.
Se você recebeu a palavra "Conectado", sua porta está viva e funcionando :) Este é um exemplo para uma escuta do servidor SSH, sua saída do heroku deve ser diferente.