Verbinding van buitenaf
Een databank als mysql of mariadb is standaard geïnstalleerd in OpenSUSE 15.1. Meestal met het mysql_secure_installation script, dat er voor zorgt dat de databank in een veilige toestand op de server komt (niet zoals vroeger met alles draaiend, open, zonder root wachtwoord en een bekende voorgedefinieerde gast of test account…). Je kan na de installatie vanop de eigen server (localhost) inloggen. Maar als je nu vanop afstand wil inloggen op mysql of rechtstreeks vanuit programma’s de databank wil aanspreken, moet je een paar aanpassingen doen. Hieronder enkele voor intern gebruik (in een eigen lokaal netwerk), en even situeren:
1. Installatie
2. local user
3. remote use
A. Firewall
B. listen to port
C. remote use
D. SSL tunnel/VPN
1. en 2. zijn gebeurd is het uitgangspunt.
3. remote use
3.A. Firewall
Opensuse YAST: Firewall tool, service “mysql”, in zone “public” (is bv default).
op de commandolijn:
systemctl status firewalld
(om te zien of hij draait)
firewall-cmd --list-all
toont lijst met bv:
..
services: ssh dhcpv6-client mysql
ports:
…
grep mysql /etc/services
toont op welke poorten de diensten zitten
grep mysql /etc/services
mysql-cluster 1186/tcp # MySQL Cluster Manager [Arjen_Lentz]
mysql-cluster 1186/udp # MySQL Cluster Manager [Arjen_Lentz]
mysql-cm-agent 1862/tcp # MySQL Cluster Manager Agent [Andrew_Morgan]
mysql-cm-agent 1862/udp # MySQL Cluster Manager Agent [Andrew_Morgan]
mysql-im 2273/tcp # MySQL Instance Manager [Petr_Chardin]
mysql-im 2273/udp # MySQL Instance Manager [Petr_Chardin]
mysql 3306/tcp # MySQL [Monty]
mysql 3306/udp # MySQL [Monty]
mysql-proxy 6446/tcp # MySQL Proxy [Kay_Roepke]
mysql-proxy 6446/udp # MySQL Proxy [Kay_Roepke]
mysqlx 33060/tcp # MySQL Database Extended Interface [Oracle_8] [Omer_BarNir]
3.B. listen to port
telnet mysql.servernaam.loc 3306
Trying 192.168.1.205…
telnet: connect to address 192.168.1.205: Connection refused
Of met nc op ip-adres of hostname als dns goed is:
nc -v 192.168.1.29 3306
nc: connect to 192.168.1.229 port 3306 (tcp) failed: No route to host
(firewall dicht?)
nc -v mysql.servernaam.loc 3306
nc: connect to mysql.servernaam.loc port 3306 (tcp) failed: Connection refused
Connection refused: waarschijnlijk is poort wel open, maar luistert de dienst niet.
Dat wordt bepaald in /etc/my.cnf
staat standaard uitgecomment:
#port = 3306
en bind-address=127.0.0.1 staat standaard aan; uit-commenten zodat hij die algemene bind netwerk doet.
bind-address=127.0.0.1
3.C. user name, ip
Gebruiker bijmaken voor gebruik vanop afstand. (voor elk ander gebruik dan root-beheer moet je een andere account maken).
CREATE USER ‘my_app_user’@’10.132.51.34’ IDENTIFIED BY ‘some-strong-password’;
In plaats van op 1 bepaald ip addres kan ook een reeks adressen gebruikt worden:
netmask IPV4: ‘my_app_user’@’10.132.51.0/255.255.255.0′
Wildcards:’my_app_user’@’%.example.com’
systemctl status mysql
systemctl restart mysql