Mariadb server [Réglé]

lancelot Membre non connecté
-
- Voir le profil du membre lancelot
- Inscrit le : 12/11/2012
- Groupes :
Je suis en train d'essayer de connecter Java à une BDD mariadb et j'y arrive pas !!

Avant que vous me donniez des conseils sur Java en lui-même, sachez que j'ai réussi à faire cette connexion sur une Debian. Et, d'autre part j'arrive à me connecter à cette BDD en direct et via phpmyadmin.
En fait j'ai l'impression, qu'il me manque mariadb-server.
Est-ce que c'est moi qui n'ait pas réussi à trouver le bon paquet ? Si oui, merci de m'indiquer lequel.
J'ai pourtant mariadb et mariadb-core, entre autres, d'installés et il n'y a pas de paquet mariadb-server. Peut-être se trouve-t-il sur un dépôt tiers ?
Éventuellement, si compliqué avec mariadb, vous me conseillez quoi ? postgreSQL ?
multi boot:
-mageia 9 64 bit avec bureau: lxde
-debian sid avec xfce
-mageia 9 64 bit avec bureau: lxde
-debian sid avec xfce

nic80 Membre non connecté
-
- Voir le profil du membre nic80
- Inscrit le : 06/08/2018
- Groupes :
-
Modérateur
Je pense qu' il ne devrait pas y avoir de mariadb-server (un nom donné par Debian ? ).
Ici je pense qu' il manque juste le connecteur jdbc pour Mariadb.
Je doute que le paquet mysql-connectors-jdbc puisse faire l' affaire.
Mais je ne vois pas de paquet mariadb-connectors-jdbc ...

Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
lancelot :
Avant que vous me donniez des conseils sur Java en lui-même
Chacun ses défauts

lancelot :
Éventuellement, si compliqué avec mariadb, vous me conseillez quoi ? postgreSQL ?
Sqlite ?

Il nous faut plus de détails sur l'installation et la configuration de mariadb pour débusquer où il y a eu un soucis.
Est-ce que mariadb a été initialisé ?
La connexion se fait par ip ou par socket ?
…
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

lancelot Membre non connecté
-
- Voir le profil du membre lancelot
- Inscrit le : 12/11/2012
- Groupes :
Merci pour vos retours.
nic80 :
Je pense qu' il ne devrait pas y avoir de mariadb-server (un nom donné par Debian ? ).
Ici je pense qu' il manque juste le connecteur jdbc pour Mariadb.
J'ai fait une recherche sur pkgs.org, presque toutes les distributions ont un paquet "mariadb-server" mais peut-être que c'est juste la même chose que le "mariadb" de Mageia.
Jybz :
Il nous faut plus de détails sur l'installation et la configuration de mariadb pour débusquer où il y a eu un soucis.
Je n'ai pas touché à la configuration de base de mariadb.
Jybz :
Est-ce que mariadb a été initialisé ?
Qu'entends-tu par là ? Vu que j'y ai ajouté un utilisateur et une base, je pense que la réponse est oui.
Jybz :
La connexion se fait par ip ou par socket ?
Comment je peux savoir ça ?
Avec systemd je ne trouve que mysqld et pas de mariadb.
Avec la commande
Code :
$ netstat -tulpen
Je ne trouve pas de serveur mysql ou mariadb.
Ni de 127.0.0.1:3306 ou mariadb devrait écouter
...
multi boot:
-mageia 9 64 bit avec bureau: lxde
-debian sid avec xfce
-mageia 9 64 bit avec bureau: lxde
-debian sid avec xfce

lancelot Membre non connecté
-
- Voir le profil du membre lancelot
- Inscrit le : 12/11/2012
- Groupes :
Jybz :
La connexion se fait par ip ou par socket ?
Voilà la première erreur renvoyée par java:
java.sql.SQLNonTransientConnectionException: Socket fail to connect to host:address=(host=localhost)(port=3306)(type=primary). Connexion refusée
multi boot:
-mageia 9 64 bit avec bureau: lxde
-debian sid avec xfce
-mageia 9 64 bit avec bureau: lxde
-debian sid avec xfce

nic80 Membre non connecté
-
- Voir le profil du membre nic80
- Inscrit le : 06/08/2018
- Groupes :
-
Modérateur
La connexion refusée pourrait venir du fait que :
- le port 3306 n' est pas en écoute sur l' interface localhost (ou bloquée par un parefeu au milieu)
- ll n' y a pas de compte root@localhost sur le serveur Mariadb. Attention aussi à la casse Root@localhost est different de root@localhost

lancelot Membre non connecté
-
- Voir le profil du membre lancelot
- Inscrit le : 12/11/2012
- Groupes :
nic80 :
- le port 3306 n' est pas en écoute sur l' interface localhost (ou bloquée par un parefeu au milieu)
Effectivement, je pense que là est le problème. Mais je ne sais pas comment le résoudre, je pensais que le fait de lancer mysqld suffirait à ce qu'il écoute sur ce port, mais ce n'est visiblement pas le cas.
On peut bloquer des ports à soi-même ? Sur l'interface de j'ai mis que je voulais laisser le serveur mysql accessible depuis internet, mais ça n'a rien changé.
multi boot:
-mageia 9 64 bit avec bureau: lxde
-debian sid avec xfce
-mageia 9 64 bit avec bureau: lxde
-debian sid avec xfce

Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
lancelot :
On peut bloquer des ports à soi-même ?
Oui, mais "il faut le chercher". Par défaut ce n'est pas le cas, et je ne suis même pas sûr qu'on puisse le faire avec les outils graphiques.
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

nic80 Membre non connecté
-
- Voir le profil du membre nic80
- Inscrit le : 06/08/2018
- Groupes :
-
Modérateur
La page de configuration de Mariadb indique (https://mariadb.com/kb/en/configuring-mariadb-for-remote-client-access/) br />
Citation :Some MariaDB packages bind MariaDB to 127.0.0.1 (the loopback IP address) by default as a security measure using the bind-address configuration directive. Old MySQL packages sometimes disabled TCP/IP networking altogether using the skip-networking directive. Before going in to how to configure these, let's explain what each of them actually does:
skip-networking is fairly simple. It just tells MariaDB to run without any of the TCP/IP networking options.
bind-address requires a little bit of background information. A given server usually has at least two networking interfaces (although this is not required) and can easily have more. The two most common are a Loopback network device and a physical Network Interface Card (NIC) which allows you to communicate with the network. MariaDB is bound to the loopback interface by default because it makes it impossible to connect to the TCP port on the server from a remote host (the bind-address must refer to a local IP address, or you will receive a fatal error and MariaDB will not start). This of course is not desirable if you want to use the TCP port from a remote host, so you must remove this bind-address directive or replace it either 0.0.0.0 to listen on all interfaces, or the address of a specific public interface.
Peut être que c' est ceci qui bloque ?
edit:
En tous cas dans le fichier /etc/mycnd.d/server.cnf du paquet, par défaut il y a ceci:
Citation :# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (via the "enable-named-pipe" option) will render mysqld useless!
#
skip-networking
#bind-address=192.168.100.1
Il faudrait donc commenter cette ligne, sinon seules les connexions de type socket seront utilisable ( probablement ce qu' utilisent phpmyadmin et le client local.
De plus, seules les connexions locales seront possibles le bind-address étant commenté (#bind-address=0.0.0.0) un peu plus bas dans le fichier.
Ouvrir le port dans le firewall n' aura donc aucun effet, car certes le parefeu laissera passer, mais c' est le serveur lui même qui rejettera la connexion.
Édité par nic80 Le 05/05/2024 à 07h37

PaLmAs Membre non connecté
-
- Voir le profil du membre PaLmAs
- Inscrit le : 02/04/2007
- Groupes :
Te connecte tu en console à ton serveur mariadb ? l'instance de mariadb logiquement celle ci s'appelle mysql. (Oui même si tu utilise mariadb).
Pour te connecter en console:
$ mysql -u user -p
user l'utilisateur ayant accés à la bdd donc root.
Il te demandera un mot de passe.
Si tu te connecte avec ton utilisateur et mot de passe, alors ton serveur mariadb est bien configuré.
Pour ta connexion depuis java, utilise le même user et mot de passe.
Pour vérifié que localhost est bien configurer sur ta machine en console :
$ ping localhost
il doit répondre un truc du genre :
64 octets de localhost (127.0.0.1) : icmp_seq=1 ttl=64 temps=0.082 ms
Si il ne renvoie rien alors regarde dans ton hosts :
$ cat /etc/hosts
il doit y avoir cette ligne :
127.0.0.1 localhost (sinon rajoute là)
Ensuite il faut vérifier la configuration de ton serveur mariadb et vérifier le port sur lequel il écoute et sur quelle adresse ou plage ip, pour cela reporte toi au message de nic80 pour configurer l'adresse ip d’écoute et le port.
Tu peux aussi remplacer localhost par 127.0.0.1

Papoteur Membre non connecté
-
- Voir le profil du membre Papoteur
- Inscrit le : 03/10/2011
- Groupes :
-
Modérateur
-
Équipe Mageia
-
Administrateur
-
Forgeron
Le serveur est géré par défaut par systemd.
Donc pour le démarrer et l'activer pour qu'il soit lancé à chaque démarrage :
Code BASH :
systemctl enable --now mysqld.service
Pour savoir s'il est lancé :
Code BASH :
systemctl status mysqld.service
Je ne connais rien au java, donc je ne peux pas te dire quel connecteur il faut installer.
Yves

vouf Membre non connecté
-
- Voir le profil du membre vouf
- Inscrit le : 16/08/2008
- Groupes :
Il faut penser effectivement :
a) A initier le mot de passe root de mariadb. Pour cela on lancera mysql_secure_installation en étant connecté
b) Activer et lancer le service mysqld.service
c) Si on accède depuis l'extérieur à mariadb , penser à adapter la configuration du firewall mageia.
Mageia 9 64 bits Plasma - Asus Prime Z690-P D4 -Intel Core i5 12600 K- 32 Go Kingston Fury Renegade DDR4-3600 Mhz- Gigabyte Nvidia RTX 3060 - Go-M2 Samsung Evo 970 1Tb-SSD 512 Gb Samsung Evo 960 -SSD 512 Gb Crucial M5

lancelot Membre non connecté
-
- Voir le profil du membre lancelot
- Inscrit le : 12/11/2012
- Groupes :
Merci à tous et surtout merci à nic80 qui a réussi à me faire obtenir ceci :
Code TEXT :
Etat de la connexion ouverte

nic80 :
En tous cas dans le fichier /etc/mycnd.d/server.cnf du paquet, par défaut il y a ceci:
Citation :# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (via the "enable-named-pipe" option) will render mysqld useless!
#
skip-networking
#bind-address=192.168.100.1
Il faudrait donc commenter cette ligne, sinon seules les connexions de type socket seront utilisable ( probablement ce qu' utilisent phpmyadmin et le client local.
De plus, seules les connexions locales seront possibles le bind-address étant commenté (#bind-address=0.0.0.0) un peu plus bas dans le fichier.
Ouvrir le port dans le firewall n' aura donc aucun effet, car certes le parefeu laissera passer, mais c' est le serveur lui même qui rejettera la connexion.
C'est bien le fait de commenter la ligne skip-networking qui a résolu mon problème.
Étant en local, je n'ai pas eu besoin de toucher le reste du fichier.
multi boot:
-mageia 9 64 bit avec bureau: lxde
-debian sid avec xfce
-mageia 9 64 bit avec bureau: lxde
-debian sid avec xfce

Papoteur Membre non connecté
-
- Voir le profil du membre Papoteur
- Inscrit le : 03/10/2011
- Groupes :
-
Modérateur
-
Équipe Mageia
-
Administrateur
-
Forgeron
lancelot :C'est bien le fait de commenter la ligne skip-networking qui a résolu mon problème.
Étant en local, je n'ai pas eu besoin de toucher le reste du fichier.
Bonjour,
De ce que je comprends, tu as activé la fonction réseau pour pouvoir communiquer avec mariadb, tout en étant en local.
Par "local", je comprends que ton application est sur la même machine que le serveur mariadb. Tu devrais plutôt dans ce cas envoyer tes requêtes non pas par le réseau, mais par la socket.
La socket est définie également dans /etc/my.cnf et est par défaut /var/lib/mysql/mysql.sock
C'est la manière dont tu configures la connexion dont java qui le détermine.
Voir par exemple : https://stackoverflow.com/questions/25918416/jdbc-mysql-connection-using-unix-socket
Yves

lancelot Membre non connecté
-
- Voir le profil du membre lancelot
- Inscrit le : 12/11/2012
- Groupes :
C'est tout à fait ça Papoteur, j'utilise plutôt le réseau car ça me parait plus universel, si je veux pouvoir, dans un autre cadre, me connecter à une BDD sur une machine distante.
C'est quoi l'avantage d'utiliser la socket ? Ou de manière plus générale, comment choisir entre utiliser une socket et une connexion réseau ?
multi boot:
-mageia 9 64 bit avec bureau: lxde
-debian sid avec xfce
-mageia 9 64 bit avec bureau: lxde
-debian sid avec xfce
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie