MariaDB

MARIADB 5.5/10.1.20


Sommaire

- Réinitialiser le mot de passe perdu

- Connection distante MariaDB-5.5

- Import/Export d'une base de données distante

- Installation MariaDB-10.1.20 sur CentOS7

- Acces distant MariaDB-10.1.20 avec phpMyAdmin

 

MARIADB - Réinitialiser le mot de passe root perdu


1°) Arrêter le service

# systemctl stop mariadb

2°) Passer outre les droits applicables sur les tables

# mysqld_safe --skip-grant-tables &

3°) Connection en tant que root

# mysql -u root
-> Welcome to the MariaDB monitor.
Your MariaDB connection id is 1
Server version: 5.5.47-MariaDB MariaDB Server
Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

MariaDB [(none)]> use mysql;
y

Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]> update user set password=PASSWORD("NouveauMotDePasse") where user='root';
Query OK, 4 rows affected
Rows matched: 4 Changed: 4 Warning: 0
y
y

MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected

MariaDB [mysql]> quit
Bye

4°) Relancer le service base de données MariaDB

# systemctl restart mariadb

5°) Vérification de la connection

# mysql -u root -p
y

-> Enter password: ********
Welcome to the MariaDB monitor...
MariaDB [(none)]> quit

 


MariaDB 5.5 - Connexion distante

Prés-requis

Serveur de bases de données : @IPV4 192.168.1.120
Serveur Web : @IPV4 : 192.168.1.130

Sur le serveur de bases de données (@IP 192.168.1.120)

Installation de la version de base (MariaDB 5.5) via le repo de Centos7.

# yum install mariadb-server mariadb

Autoriser les connections à partir du serveur distant (Serveur Web : @IP 192.168.1.130)
# vi /etc/my.cnf
-> bind-address=192.168.1.130

Note : Si plusieurs serveurs web doivent accéder au serveur de base de données, il conviendra de modifier le paramètre bind-address comme suit : bind-adress=192.168.1.0 pour autoriser toutes les machines sur le segment réseau "192.168.1.".

Relancer le gestionnaire de base de données

# systemctl start mariadb

 

Sécuriser l'installation

# mysql_secure_installation

 

Connexion à la base de données

# mysql -u root -p
-> Password : xxxxxxxx
MariaDB [(none)]>

 

Authoriser l'utilisateur test à établir une connexion à la base de données mariadb à partir de sa machine (machine distante).

La commande suivant créé un nouvel utilisateur et lui attribue touts les privilèges

MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'test'@'192.168.1.130' IDENTIFIED BY 'my-new-password' WITH GRANT OPTION;
MariaDB [(none)]> select grant_priv, host, user, password from mysql.user;
+------------+-------------------+-------+---------------------------------------+
| grant_priv | host              | user  | password                              |
+------------+-------------------+-------+---------------------------------------+
| Y          | localhost         | root  |                                       |
| Y          | 127.0.0.1         | root  |                                       |
| Y          | ::1               | root  |                                       |
| N          | localhost         |       |                                       |
| Y          | 192.168.1.%       | test  | *1330F5...4AB454793C64092             |
+------------+---------------+-------+-------------------------------------------+
7 rows in set (0.00 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]>: quit;

Nota : Voir ici pour en savoir plus sur les commandes SQL

L'exemple ci-dessous permet de supprimer la ligne de l'utilisateur "test" dans la table mysql.user. Attention à bien préciser la clause WHERE sinon, c'est toutes les lignes de la tables qui passent à la trappe.

y
MariaDB [(none)]> DELETE FROM mysql.user WHERE user='test";

 

A ce point, l'utilisateur "test" peut se connecter sur le serveur de base de données à partir de la machine distante.

# mysql -u test -p -h 192.168.1.120
MariaDB [(none)]>

 

MariaDB - Import/Export d'une base de données distante

A partir du serveur source MariaDB-5.5, réalisation de l'export de la base de données XenForo

# mysqldump -u root -p XenForo > Xenforo_backup.sql
-> Enter password:

Fichier créé : Xenforo_backup.sql

 

Toujours à partir du serveur source, réalisation de l'Import sur le serveur de destination MariaDB-10.2

# mysql -u root -p -h @IP_du_serveur_de_base_de_données_distant XenForo < Xenforo_backup.sql
-> Enter password

Aucun message => l'import s'est correctement déroulé.

Si message ERROR 2006 (HY000) at line xxxx: MySQL server has gone away, il faut augmenter la valeur du paramètre max_allowed_packet = 5M (valeur par défaut 1M) dans le fichier de configuration /etc/my.cnf.

 

MariaDB 10.2.14 - Installation sur Centos 7

Attention : Si une installation de MariaDB 5.5 existe, il est nécessaire de la désinstaller avant de procéder à l'installation de la version 10.X.

Ajouter le repo mariadb

# touch /etc/yum.repos.d/MariaDB.repo
# vi /etc/yum.repos.d/MariaDB.repo
->
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey = https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck = 1

A noter : MariaDB propose un générateur de fichier repo à l'adresse ci-après : Outil de configuration du repo MariaDB

 

Lancer l'installation du serveur et du client

# yum install mariadb-server mariadb-client

 

Sauvegarder le fichier de configuration d'origine

# cp /etc/my.cnf{,.ori}

Copier l'un des fichiers de configuration en fonction de l'utilisation de la base de données parmis les 4 choix offerts :
- utilisation occasionnelle : my-small.cnf,
- petite utilisation quotidienne : my-medium.cnf,
- utilisation quotidienne soutenue : my-large.cnf,
- grosse utilisation : my-huge.cnf

# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

 

Démarrer et activer le démarrage automatique

# systemctl start mariadb
# systemctl enable mariadb

Sécuriser Mariadb

# mysql_secure_installation
->
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
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] Y
New password: ********
Re-enter new password: ********
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] n
 ... skipping.

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!

 

MariaDB 10 - Acces distant avec phpMyAdmin (remote connexion) sur CentOS 7

 

Modification du fichier my.cnf.
Ajout de la directive bind-address=0.0.0.0 qui autorise la connexion à partir de n'importe quelle source en IPV4 uniquement. Si IPV6 est utilisé conjointement avec IPV4, modifiez le paramètre comme suit : bind-address=::

# vi /etc/my.cnf
-> ...
[mysqld]
bind-address = 0.0.0.0
port = 3306
...

 

Créer un compte autoriser à se connecter à partir de n'importe quelle source

# mysql -u root -p
-> Password : xxxxxxxx
MariaDB [(none)]>
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'test'@'192.168.1.%' IDENTIFIED BY 'my-new-password' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]>: quit;

Nota : Voir ici pour en savoir plus sur les commandes SQL

 

Ouvrir le port de communication

# firewall-cmd --permanent --add-port=3306/tcp
# firewall-cmd --reload

 

Se connecter à partir d'une machine distante

# mysql -u test -p -h 192.168.1.120
->
MariaDB [(none)]>

 

Paramètrage de Selinux

Sur le serveur WEB (serveur qui exécute phpMyAdmin)

# setsebool httpd_can_network_connect_db on

 

A partir de ce point, il est possible de se connecter via PhpMyAdmin sur le serveur de base de données distant.

 

Que faire en cas de problème ?

# mysql -u root -p -h 192.168.1.120
-> Enter password: ********
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.1.120' (113 "No route to host")
 

Vérifiez que le port de communication est correctement paramétré sur le serveur de base de données et que vous avez bien relancé le firewall

# firewall-cmd --reload
# firewall-cmd --list-all
->
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp2s0
  sources:
  services: ftp dhcpv6-client http ssh https
  ports: 21/tcp 3306/tcp 8983/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

C'est bon

Vérifiez que l'utilisateur et la machine distante ont bien été inséré dans la table des utilisateurs mysql

# mysql -u root -p
-> Enter password : ********
MariaDB [(none)]> select host, user from mysql.user;

Vérifier la configuration dans votre fichier /etc/my.cnf

J'ai rencontré des difficultés avec la directive bind-address en voulant restreindre l'écoute aux adresses IP de mon réseau local en utilisant bind-address = 192.168.1.0. A priori, ça ne fonctionne pas. Depuis mariaDB 13.3.x, le serveur écoute sur toutes les adresses (bind-address = 0.0.0.0 par défault). Sur certaines distribution, il écoute par defaut sur le port 127.0.0.1.
Il faut donc s'assurer que le serveur écoute bien sur les bonnes adresses et que la directive skip-networking est bien commentée.

# vi /etc/my.cnf
->
bind-address = 0.0.0.0
# skip-networking

Noubliez pas de relancer le serveur mariadb

# systemctl restart mariadb