Habilitar acesso remoto a bancos de dados MySQL / MariaDB no Linux
Por padrão, MySQL ou MariaDB apenas escuta conexões do host local. Todo o acesso remoto ao servidor é negado por padrão.
Etapa 1: para habilitar o acesso remoto, primeiro encontre o local do arquivo de configuração e execute os comandos abaixo para abrir o arquivo de configuração MySQL / MariaDB:
1
|
vi /etc/my.cnf |
Depende do seu sistema operacional e da versão do MySQL / MariaDB que você usa. Aqui estão alguns locais:
1
2
3
|
/etc/my.cnf /etc/mysql/mysql.conf.d/mysql.cnf /etc/mysql/mariadb.conf.d/50-server.cnf |
Você pode encontrar o local usando este comando:
1
2
3
|
find / -name my.cnf find / -name *server.cnf find / -name mysql.cnf |
Etapa 2: você deve comentar (precedido por caracteres hash (#)) as seguintes linhas:
1
2
3
4
5
|
[mysqld] ... #skip-networking ... #bind-address = <some ip-address> |
ou você pode usar o endereço IP do seu servidor (suponha: 11.11.11.11) ou 0.0.0.0
1
|
bind-address = 11.11.11.11 |
Etapa 3: reinicie o servidor MySQL / MariaDB
1
2
|
systemctl restart mysql.service systemctl restart mariadb.service |
Para verificar se a mudança acontece, execute os comandos abaixo:
1
2
|
[root@tutorialspots ~]# netstat -anp | grep 3306 tcp6 0 0 :::3306 :::* LISTEN 2884/mysqld |
Etapa 4: abra o firewall (suponha que o endereço remoto: 22.22.22.22)
Para iptables
1
2
3
|
[root@tutorialspots ~]# iptables -I INPUT -p udp -s 22.22.22.22 --dport 3306 -j ACCEPT [root@tutorialspots ~]# iptables -I INPUT -p tcp -s 22.22.22.22 --dport 3306 -j ACCEPT service iptables save |
Para firewalld
1
2
3
|
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="22.22.22.22" port protocol="tcp" port="3306" accept' firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="22.22.22.22" port protocol="udp" port="3306" accept' sudo firewall-cmd --reload |
Etapa 5: Conecte-se ao servidor MySQL / MariaDB usando o usuário root
1
|
mysql -uroot -pdatabaseuser_password -h server hostname or IP address |
Exemplo:
1
2
3
4
5
6
7
8
9
10
|
[root@tutorialspots ~]#mysql -uroot -pMYROOTPASSWORD Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 61351084 Server version: 10.3.8-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> |
Etapa 6: Por exemplo, se você deseja um computador cliente com endereço IP 22.22.22.22 (às vezes, você deve usar o nome do host como sv.tutorialspots.com) para se conectar a um banco de dados chamado your_database_name como usuário your_user, então use este comando:
1
2
|
GRANT ALL ON your_database_name.* TO '[email protected]' IDENTIFIED BY 'new password here'; quit; |
Se você receber um erro:
1
|
ERROR 1045 (28000): Access denied for user 'your_user'@'22.22.22.22' (using password: YES) |
Mudar
1
2
|
GRANT ALL ON your_database_name.* TO '[email protected]' IDENTIFIED BY 'new password here'; quit; |
Para
1
2
3
|
CREATE USER 'your_user'@'22.22.22.22' IDENTIFIED BY 'new password here'; grant all privileges on your_database_name.* to 'your_user'@'22.22.22.22' with grant option; quit; |