permite acesso remoto ao mysql (através de webmin ou shell)

2

Spec: Ubuntu 14.04 webmin / virtualmin 1.791

Estou usando o seguinte código para testar a conexão remota com o banco de dados mysql:

<?php

$db_host = "123.456.789";
$db_name = "database";
$db_user = "user";
$db_pass = "password";
$db_table_prefix = "prefix_";



GLOBAL $errors;
GLOBAL $successes;

$errors = array();
$successes = array();

$mysqli = new mysqli($db_host, $db_user, $db_pass, $db_name);
GLOBAL $mysqli;

if(mysqli_connect_errno()) {
    echo "Conn Error = " . mysqli_connect_error();
    exit();
}

?>

Continuo recebendo este erro:

  

Nenhuma conexão pode ser feita porque a máquina de destino ativamente   recusou.

A pesquisa mostra que isso significa que o servidor "não está ouvindo". Antes de executar o script acima, eu já tentei permitir o acesso remoto ao mysql através do webmin gui. O que fiz foi editar "permissões de host de gerenciamento de banco de dados" e torná-lo o seguinte:

Isso deveria permitir acesso remoto ao mysql, mas não funciona. Eu também li em algum outro lugar que para permitir acesso remoto ao mysql eu preciso editar /etc/mysql/my.cnf ; Eu pensei que depois de editar as "permissões do host" no webmin, este arquivo seria alterado, mas não foi. Por outro lado, não consegui encontrar as linhas que eu deveria editar em my.cnf , então estou preso aqui.

Qualquer ajuda é apreciada.

    
por shenkwen 30.03.2016 / 02:30

1 resposta

5

Entre no mysql mysql -u yourname -p yourpassword , depois siga assim

mysql>use mysql;
mysql>select host,user from user;

Pode dar o seguinte resultado:

+-----------+------------------+
| host      | user             |
+-----------+------------------+
| 127.0.0.1 | root             |
| ::1       | root             |
| localhost | debian-sys-maint |
| localhost | root             |
+-----------+------------------+
4 rows in set (0.00 sec)

Se você ver isso, significa que você só pode conectar o mysql no localhost, então você precisa seguir os seguintes passos:

mysql>GRANT ALL PRIVILEGES ON *.* TO username@"%" IDENTIFIED BY "password";
Query OK, 0 rows affected (0.00 sec)
mysql>flush privileges;
Query OK, 0 rows affected (0.00 sec)

"%" significa que qualquer host pode fazer logon remotamente no servidor, se você quiser restringir o acesso a apenas uma máquina, precisará alterar o "%" para o endereço IP da máquina que deseja permitir a conexão.

Se funcionar, você select host,user from user; receberá as seguintes informações:

+-----------+------------------+
| host      | user             |
+-----------+------------------+
| %         | root             |
| 127.0.0.1 | root             |
| ::1       | root             |
| localhost | debian-sys-maint |
| localhost | root             |
+-----------+------------------+
5 rows in set (0.00 sec)

Saia do mysql, edite /etc/mysql/my.cnf , encontre

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address           = 127.0.0.1

anote ou você pode deletá-lo (não recomendado), reinicie seu servidor mysql, usando service mysql restart , se você fizer isso como eu, você pode resolver o problema.

Funciona bem no meu computador (Ubuntu 14.04 + MySQL 5.5)

    
por zero lu 30.03.2016 / 08:50