« LINUX:MariaDB » : différence entre les versions

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 126 : Ligne 126 :
  Thanks for using MariaDB!
  Thanks for using MariaDB!
----
----
Par ce moyen, on ne peut accéder à la base de données que localement.
Vous pouvez aussi utiliser les commandes de lignes SQL.
Vous pouvez aussi utiliser les commandes de lignes SQL.






=FireWall=
 
 
 
 
==Configurer le mur de feu ou FireWall==
Normalement, on doit désactiver l'accès à distance à cette base de données. En l'état il n'y a pas d'utilisateur configuré pour cela.
 
 
Vous pouvez explicitement ajouter une règle au FireWall qui rejete ces demandes d'accès en fonction de la configuration. Normalement une bonne configuration doit tout rejeter sauf ce qui est explicitement permis. Le port par défaur est 3306.
 
Voici cette règle pour IPTABLES:
----
-A INPUT -p tcp -m tcp --dport 3306 -j DROP
----
 
Par contre, si on veux y accéder à distance, il faut ajouter un utilisateur adéqua et ajouter une règle au FireWall.
 
Dans l'exemple, Notre LAN permet l'accès; son adressage est 192.168.1.0 avec un masque de 255.255.255.0 ou de 24 bits. Nous utilisons IPTABLES; voici la ligne à ajouter:
----
-A INPUT -p tcp -m tcp --dport 139 -s 192.168.1.0/24 -j ACCEPT
----





Version du 26 décembre 2020 à 23:01

But

MariaDB est un gestionnaire de base de données client-serveur utilisant le langage SQL. Il fait suite à MySQL. Il est souvent utilisé au même titre que PostgreSQL, autre gestionnaire de base de données.


Installation

On a besoin d'installer un package qui installera les dépendances nécessaires:

dnf install mariadb mariadb-server


Configuration

Les fichiers de configurations se trouvent dans le répertoire "/etc/my.cnf.d". Parmi ceux-ci, un seul nous intéresse: mariadb-server.cnf".

Par défaut, la base de données se crée dans le répertoire "/var/lib/mysql" mais nous préférons l'installer sur un disque à part. Dans notre cas, nous choisissons le répertoire "/produc/mysql".

Il faut le créer:

mkdir /produc/mysql

Il faut le faire appartenir à l'utilisateur pour lequel le service est lancé:

chown -R mysql:mysql /produc/mysql

et les privilèges:

chmod -R 660 /produc/mysql

Maintenant, il faut modifier le fichier configuration du serveur MariaDB, "/etc/my.cnf.d/mariadb-server.cnf". On modifie ou ajoutons quelques options sous la balise "[mysqld]":


[server]
[mysqld]
# répertoire contenant la base de données
datadir=/produc/mysql
# Socket, PID, journaux: de préférence, ne pas modifier
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
# niveau de journalisation, utile pour Fail2Ban
log-warnings=2
# nécessaire pour OPAC et WATERBEAR
ft_min_word_len = 1
# divers options à adapter en fonction de l'utilisation
sql-mode="NO_ENGINE_SUBSTITUTION"
max_allowed_packet=64M
innodb-log-file-size=256M
character-set-server=utf8
open_files_limit = 10000


Activer et lancer le service

Le service à lancer est mariadb. La première commande active le service pour qu'à chaque démarrage du serveur, le service se lance. La seconde lance directement le service. La troisième relance le service.

systemctl enable mariadb
systemctl start mariadb
systemctl restart mariadb


Sécurité

Lors du premier lancement du serveur, la base de données va être initialisée. Attention, si vous introduisez l'option "ft_min_word_len=1" vue ci-dessus, à postériori, vous devrez effectuer une mise à niveau de la base de données, une réindexation.

A ce stade, il n'existe qu'un utilisateur "root" ayant tous les privilèges mais sans mot de passe. Il est primordial de mettre un mot de passe. En outre, il y existe dans certaines configurations de base un schéma de "test" qui est à supprimer.

Exécutez le script suivant:

mysql_secure_installation

A la majorité des questions de type "Yes or No" (Y/n), on répond "Y" et on donne un mot de passe. Voici un exemple:


NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
.
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.
.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
.
Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.
.
You already have your root account protected, so you can safely answer 'n'.
.
Switch to unix_socket authentication [Y/n] n
 ... skipping.
.
You already have your root account protected, so you can safely answer 'n'.
.
Change the root password? [Y/n] y
New password:<VOTRE_MOT_DE_PASSE>
Re-enter new password:<VOTRE_MOT_DE_PASSE>
Password updated successfully!
Reloading privilege tables..
 ... Success!
.
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
.
Remove anonymous users? [Y/n] Y
 ... Success!
.
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
.
Disallow root login remotely? [Y/n] Y
 ... Success!
.
By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
.
Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
- Removing privileges on test database...
 ... Success!
.  
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
.
Reload privilege tables now? [Y/n] Y
 ... Success!
.
Cleaning up...
.
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
.
Thanks for using MariaDB!

Par ce moyen, on ne peut accéder à la base de données que localement.

Vous pouvez aussi utiliser les commandes de lignes SQL.




Configurer le mur de feu ou FireWall

Normalement, on doit désactiver l'accès à distance à cette base de données. En l'état il n'y a pas d'utilisateur configuré pour cela.


Vous pouvez explicitement ajouter une règle au FireWall qui rejete ces demandes d'accès en fonction de la configuration. Normalement une bonne configuration doit tout rejeter sauf ce qui est explicitement permis. Le port par défaur est 3306.

Voici cette règle pour IPTABLES:


-A INPUT -p tcp -m tcp --dport 3306 -j DROP

Par contre, si on veux y accéder à distance, il faut ajouter un utilisateur adéqua et ajouter une règle au FireWall.

Dans l'exemple, Notre LAN permet l'accès; son adressage est 192.168.1.0 avec un masque de 255.255.255.0 ou de 24 bits. Nous utilisons IPTABLES; voici la ligne à ajouter:


-A INPUT -p tcp -m tcp --dport 139 -s 192.168.1.0/24 -j ACCEPT


Sauvegarde

Restauration


->retour au menu de Linux