Version : 2022.01
Dernière mise-à-jour : 2022/11/10 07:16
Les fichiers journaux du serveur MySQL se trouvent dans le répertoire /var/lib/mysql/ sauf dans le cas où la configuration dans /etc/my.cnf stipule autrement. MariaDB utilise quatre journaux différents :
Par défaut, seul le journal des erreurs est activé par la directive suivante dans le fichier /etc/my.cnf :
... log-error=/var/log/mariadb/mariadb.log ...
Le journal binaire, aussi appelé binlog, est chargé de stocker sous format binaire toutes les requêtes qui modifient les objets de la base de données. Il est activé par l'addition de l'option log-bin dans le fichier /etc/my.cnf. Son fichier d'index est spécifié par l'option log-bin-index. Ce fichier contient la liste de tous les fichiers binlogs depuis la dernière purge et permet d'identifier le binlog en cours d'utilisation. Le binlog est l'élément central à la réplication.
Le premier binlog créé est nommé nom-fichier.000001. Le passage au binlog suivant, dénommé nom-fichier.000002 a lieu dans trois cas spécifiques :
Pour purger les anciens binlogs il convient de :
Le journal des requêtes lentes permet d'identifier les requêtes lentes. Une fois activé graĉe à l'option slow_query_log, toutes les requêtes dépassant la valeur en secondes de l'option long_query_time seront consignées. Les informations peuvent être stockées soit dans un fichier spécifié par l'option slow_query_log_file soit dans une table dédiée nommée slow_log dans le schéma mysql. Le choix est fait en éditant l'option log_output :
Par exemple :
[mysqld] ... slow_query_log slow_query_log_file = /var/log/mysql-slow.log long-query-time = 2 ...
Par exemple :
[root@centos8 ~]# vi /etc/my.cnf.d/mariadb-server.cnf [root@centos8 ~]# cat /etc/my.cnf.d/mariadb-server.cnf # # These groups are read by MariaDB server. # Use it for options that only the server (but not clients) should see # # See the examples of server my.cnf files in /usr/share/mysql/ # # this is read by the standalone daemon and embedded servers [server] # this is only for the mysqld standalone daemon # Settings user and group are ignored when systemd is used. # If you need to run mysqld under a different user or group, # customize your systemd unit file for mysqld/mariadb according to the # instructions in http://fedoraproject.org/wiki/Systemd [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock log-error=/var/log/mariadb/mariadb.log pid-file=/run/mariadb/mariadb.pid slow_query_log slow_query_log_file = /var/log/mysql-slow.log long-query-time = 2 # # * Galera-related settings # [galera] # Mandatory settings #wsrep_on=ON #wsrep_provider= #wsrep_cluster_address= #binlog_format=row #default_storage_engine=InnoDB #innodb_autoinc_lock_mode=2 # # Allow server to accept connections on all interfaces. # #bind-address=0.0.0.0 # # Optional setting #wsrep_slave_threads=1 #innodb_flush_log_at_trx_commit=0 # this is only for embedded server [embedded] # This group is only read by MariaDB servers, not by MySQL. # If you use the same .cnf file for MySQL and MariaDB, # you can put MariaDB-only options here [mariadb] # This group is only read by MariaDB-10.3 servers. # If you use the same .cnf file for MariaDB of different versions, # use this group for options that older servers don't understand [mariadb-10.3] [root@centos8 ~]# systemctl restart mariadb [root@centos8 ~]# systemctl status mariadb ● mariadb.service - MariaDB 10.3 database server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2022-11-09 00:34:09 EST; 12s ago Docs: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Process: 25692 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, status=0/SUCCESS) Process: 25622 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mariadb.service (code=exited, status=0/SUCCESS) Process: 25594 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS) Main PID: 25661 (mysqld) Status: "Taking your SQL requests now..." Tasks: 30 (limit: 100949) Memory: 71.2M CGroup: /system.slice/mariadb.service └─25661 /usr/libexec/mysqld --basedir=/usr Nov 09 00:34:09 centos8.ittraining.loc systemd[1]: Starting MariaDB 10.3 database server... Nov 09 00:34:09 centos8.ittraining.loc mysqld[25661]: 2022-11-09 0:34:09 0 [Note] /usr/libexec/mysqld (mysqld 10.3.28-MariaDB-log) starting as process 25661 ... Nov 09 00:34:09 centos8.ittraining.loc systemd[1]: Started MariaDB 10.3 database server.
L'interrogation de MariaDB démontre la prise en compte des directives :
[root@centos8 ~]# mysql -u root -p Enter password: fenestros Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 8 Server version: 10.3.28-MariaDB-log 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)]> SHOW GLOBAL VARIABLES LIKE 'slow_query_log%'; +---------------------+-------------------------+ | Variable_name | Value | +---------------------+-------------------------+ | slow_query_log | ON | | slow_query_log_file | /var/log/mysql-slow.log | +---------------------+-------------------------+ 2 rows in set (0.001 sec) MariaDB [(none)]>
Il est aussi possible de désactiver et d'activer le journal à chaud :
MariaDB [(none)]> SET GLOBAL slow_query_log = 'OFF'; Query OK, 0 rows affected (0.000 sec) MariaDB [(none)]> SHOW GLOBAL VARIABLES LIKE 'slow_query_log%'; +---------------------+-------------------------+ | Variable_name | Value | +---------------------+-------------------------+ | slow_query_log | OFF | | slow_query_log_file | /var/log/mysql-slow.log | +---------------------+-------------------------+ 2 rows in set (0.000 sec) MariaDB [(none)]>
Important - La valeur par défaut de long-query-time est 10 secondes !!. La valeur recommandée est 1 ou 2 secondes.
Le journal général permet de consigner les requêtes valides et les informations de connexion/déconnexion des clients. Il n'est pas conseillé d'activer ce journal en production car il crée une surcharge importante. De la même manière que le journal des requêtes lentes, le journal général peut être écrit dans un fichier ou dans une table dénommée mysql.general_log. Encore une fois c'est la valeur de la directive log_output qui détermine la destination finale :
MariaDB [(none)]> SET GLOBAL general_log = 'ON'; Query OK, 0 rows affected (0.001 sec) MariaDB [(none)]> SHOW GLOBAL VARIABLES LIKE 'general_log%'; +------------------+-------------+ | Variable_name | Value | +------------------+-------------+ | general_log | ON | | general_log_file | centos8.log | +------------------+-------------+ 2 rows in set (0.000 sec) MariaDB [(none)]> exit Bye [root@centos8 ~]# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 9 Server version: 10.3.28-MariaDB-log 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)]> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | Nombres | | information_schema | | ligue1 | | mysql | | performance_schema | +--------------------+ 5 rows in set (0.000 sec) MariaDB [(none)]> exit Bye [root@centos8 ~]#
Consultez maintenant le journal :
[root@centos8 ~]# cat /var/lib/mysql/centos8.log /usr/libexec/mysqld, Version: 10.3.28-MariaDB-log (MariaDB Server). started with: Tcp port: 3306 Unix socket: /var/lib/mysql/mysql.sock Time Id Command Argument 221109 0:38:35 8 Query SHOW GLOBAL VARIABLES LIKE 'general_log%' 221109 0:38:54 8 Quit 221109 0:39:10 9 Connect root@localhost as anonymous on 9 Query select @@version_comment limit 1 221109 0:39:21 9 Query SHOW DATABASES 221109 0:39:33 9 Quit
Important - Notez la valeur par défaut du nom du fichier general_log_file.
En ajoutant la directive log_output = TABLE au fichier /etc/my.cnf.d/mariadb-server.cnf et en redémarrant le serveur, on note que les traces sont maintenant dirigées vers la table mysql.general_log au lieu du fichier /var/lib/mysql/centos8.log :
[root@centos8 ~]# vi /etc/my.cnf.d/mariadb-server.cnf [root@centos8 ~]# cat /etc/my.cnf.d/mariadb-server.cnf # # These groups are read by MariaDB server. # Use it for options that only the server (but not clients) should see # # See the examples of server my.cnf files in /usr/share/mysql/ # # this is read by the standalone daemon and embedded servers [server] # this is only for the mysqld standalone daemon # Settings user and group are ignored when systemd is used. # If you need to run mysqld under a different user or group, # customize your systemd unit file for mysqld/mariadb according to the # instructions in http://fedoraproject.org/wiki/Systemd [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock log-error=/var/log/mariadb/mariadb.log pid-file=/run/mariadb/mariadb.pid slow_query_log slow_query_log_file = /var/log/mysql-slow.log long-query-time = 2 log_output = TABLE # # * Galera-related settings # [galera] # Mandatory settings #wsrep_on=ON #wsrep_provider= #wsrep_cluster_address= #binlog_format=row #default_storage_engine=InnoDB #innodb_autoinc_lock_mode=2 # # Allow server to accept connections on all interfaces. # #bind-address=0.0.0.0 # # Optional setting #wsrep_slave_threads=1 #innodb_flush_log_at_trx_commit=0 # this is only for embedded server [embedded] # This group is only read by MariaDB servers, not by MySQL. # If you use the same .cnf file for MySQL and MariaDB, # you can put MariaDB-only options here [mariadb] # This group is only read by MariaDB-10.3 servers. # If you use the same .cnf file for MariaDB of different versions, # use this group for options that older servers don't understand [mariadb-10.3] [root@centos8 ~]# systemctl restart mariadb [root@centos8 ~]# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 8 Server version: 10.3.28-MariaDB-log 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)]> SHOW GLOBAL VARIABLES LIKE 'general_log%'; +------------------+-------------+ | Variable_name | Value | +------------------+-------------+ | general_log | OFF | | general_log_file | centos8.log | +------------------+-------------+ 2 rows in set (0.001 sec) MariaDB [(none)]> SET GLOBAL general_log = 'ON'; Query OK, 0 rows affected (0.001 sec) MariaDB [(none)]> SHOW GLOBAL VARIABLES LIKE 'general_log%'; +------------------+-------------+ | Variable_name | Value | +------------------+-------------+ | general_log | ON | | general_log_file | centos8.log | +------------------+-------------+ 2 rows in set (0.107 sec) MariaDB [(none)]> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | Nombres | | information_schema | | ligue1 | | mysql | | performance_schema | +--------------------+ 5 rows in set (0.000 sec) MariaDB [(none)]> SELECT * FROM mysql.general_log; +----------------------------+---------------------------+-----------+-----------+--------------+-------------------------------------------+ | event_time | user_host | thread_id | server_id | command_type | argument | +----------------------------+---------------------------+-----------+-----------+--------------+-------------------------------------------+ | 2022-11-09 00:45:01.062906 | root[root] @ localhost [] | 8 | 1 | Query | SHOW GLOBAL VARIABLES LIKE 'general_log%' | | 2022-11-09 00:45:14.114290 | root[root] @ localhost [] | 8 | 1 | Query | SHOW DATABASES | | 2022-11-09 00:45:26.217521 | root[root] @ localhost [] | 8 | 1 | Query | SELECT * FROM mysql.general_log | +----------------------------+---------------------------+-----------+-----------+--------------+-------------------------------------------+ 3 rows in set (0.000 sec) MariaDB [(none)]> exit Bye [root@centos8 ~]# cat /var/lib/mysql/centos8.log /usr/libexec/mysqld, Version: 10.3.28-MariaDB-log (MariaDB Server). started with: Tcp port: 3306 Unix socket: /var/lib/mysql/mysql.sock Time Id Command Argument 221109 0:38:35 8 Query SHOW GLOBAL VARIABLES LIKE 'general_log%' 221109 0:38:54 8 Quit 221109 0:39:10 9 Connect root@localhost as anonymous on 9 Query select @@version_comment limit 1 221109 0:39:21 9 Query SHOW DATABASES 221109 0:39:33 9 Quit /usr/libexec/mysqld, Version: 10.3.28-MariaDB-log (MariaDB Server). started with: Tcp port: 3306 Unix socket: /var/lib/mysql/mysql.sock Time Id Command Argument [root@centos8 ~]#
Important - Notez que la valeur de la directive general_log était OFF après le redémarrage du serveur.
Le système de sécurité sous MariaDB se repose sur des privilèges qui utilisent trois données:
Il est important de noter qu'il n'y a pas de corréspondance entre les noms d'utilisateurs et les mots de passe sous MariaDB et ceux du système d'exploitation.
Les privilèges sont stockées dans cinq tables de la base mysql:
Droit | Description |
---|---|
CREATE TEMPORARY TABLES | Créer des tables temporaires |
CREATE USER | Créer, modifier, supprimer des utilisateurs avec les commandes CREATE, DROP et RENAME |
FILE | Lire et écrire dans des fichiers sur le serveur avec les commandes SELECT … INTO OUTFILE, LOAD DATA |
GRANT OPTION | Transmettre ses privilèges à un autre utilisateur |
LOCK TABLES | Verrouiller des tables |
PROCESS | Voir les threads |
PROXY | Activer le mode proxy |
RELOAD | Réinitialiser des tables, journaux, statistiques avec les commandes FLUSH et RESET |
REPLICATION CLIENT | Superviser la réplication avec les commandes SHOW MASTER STATUS, SHOW SLAVE STATUS |
REPLICATION SLAVE | Récupérer les évenements du journal binaire du Maître |
SHOW SCHEMAS/DATABASES | Voir la liste des bases de données |
SHUTDOWN | Arrêter le serveur avec la commande mysqladmin shutdown |
SUPER | Exécuter les commandes CHANGE MASTER TO, KILL, SET GLOBAL etc |
Droit | Description |
---|---|
ALTER | Modifier le schéma et les tables avec les commandes ALTER SCHEMA/DATABASE/TABLE |
CREATE | Créer des schémas et des tables avec les commandes CREATE SCHEMA/DATABASE/TABLE |
CREATE TEMPORARY TABLE | Créer des tables temporaires |
CREATE VIEW | Créer des vues |
DELETE | Effacer des enregistrements |
DROP | Supprimer des schémas et des tables avec les commandes DROP SCHEMA/DATABASE/TABLE |
EVENT | Créer des évènements dans l'ordonnanceur |
GRANT OPTION | Transmettre ses privilèges à un autre utilisateur |
INDEX | Créer et supprimer des index avec les commandes CREATE/DROP INDEX |
INSERT | Insérer des enregistrements dans une table |
LOCK TABLES | Verrouiller des tables |
SELECT | Afficher des enregistrements d'une table ainsi que la structure de la table avec les commandes SELECT, DESCRIBE, SHOW CREATE TABLE |
SHOW VIEW | Voir le code SQL d'une vue avec la commande SHOW CREATE VIEW |
UPDATE | Modifier des enregistrements d'une table |
Important - Les privilèges liés aux schémas ne prennent effet que lors de la prochaine connexion à ce premier.
Droit | Description |
---|---|
ALTER | Modifier les tables |
CREATE | Créer des tables |
DELETE | Effacer des enregistrements |
DROP | Supprimer des tables |
GRANT OPTION | Transmettre ses privilèges à un autre utilisateur |
INDEX | Créer et supprimer des index |
INSERT | Insérer des enregistrements dans une table |
SELECT | Afficher des enregistrements d'une table ainsi que la structure de la table avec les commandes SELECT, DESCRIBE, SHOW CREATE TABLE |
TRIGGER | Créer/supprimer des déclencheurs |
UPDATE | Modifier des enregistrements d'une table |
Important - Les privilèges liés aux tables prennent effet immédiatement.
Droit | Description |
---|---|
INSERT | Insérer des enregistrements dans une table |
SELECT | Afficher des enregistrements d'une table ainsi que la structure de la table avec les commandes SELECT, DESCRIBE, SHOW CREATE TABLE |
UPDATE | Modifier des enregistrements d'une table |
Important - Les privilèges liés aux colonnes prennent effet immédiatement.
Droit | Description |
---|---|
CREATE ROUTINE | Créer des procédures et fonctions stockées |
ALTER ROUTINE | Modifier des procédures et fonctions stockées |
EXECUTE | Exécuter des procédures et fonctions stockées |
GRANT OPTION | Transmettre ses privilèges à un autre utilisateur |
Lors de la création d'une routine stockées ou une vue, le créateur peut choisir si la routine ou la vue sera exécuter par la suite avec :
Cette possibilité est donner par l'utilisation de la commande SQL SECURITY. Par exemple :
> CREATE SQL SECURITY INVOKER VIEW V_EQUIPE AS SELECT id_equipe, nom, stade, ville, points, buts, entraineur FROM equipe; [Entrée]
Droit | Description |
---|---|
MAX_QUERIES_PER_HOUR | Limiter le nombre de requêtes par heure |
MAX_UPDATES_PER_HOUR | Limiter le nombre de UPDATE par heure |
MAX_CONNECTIONS_PER_HOUR | Limiter le nombre de connexions par heure |
MAX_USER_CONNECTIONS | Limiter le nombre de connexions simultanées |
[root@centos7 ~]# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 3 Server version: 5.5.56-MariaDB MariaDB Server Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> USE mysql; 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]>
Visualisez la table user:
MariaDB [mysql]> DESCRIBE user; +------------------------+-----------------------------------+------+-----+----------+-------+ | Field | Type | Null | Key | Default | Extra | +------------------------+-----------------------------------+------+-----+----------+-------+ | Host | char(60) | NO | PRI | | | | User | char(80) | NO | PRI | | | | Password | char(41) | NO | | | | | Select_priv | enum('N','Y') | NO | | N | | | Insert_priv | enum('N','Y') | NO | | N | | | Update_priv | enum('N','Y') | NO | | N | | | Delete_priv | enum('N','Y') | NO | | N | | | Create_priv | enum('N','Y') | NO | | N | | | Drop_priv | enum('N','Y') | NO | | N | | | Reload_priv | enum('N','Y') | NO | | N | | | Shutdown_priv | enum('N','Y') | NO | | N | | | Process_priv | enum('N','Y') | NO | | N | | | File_priv | enum('N','Y') | NO | | N | | | Grant_priv | enum('N','Y') | NO | | N | | | References_priv | enum('N','Y') | NO | | N | | | Index_priv | enum('N','Y') | NO | | N | | | Alter_priv | enum('N','Y') | NO | | N | | | Show_db_priv | enum('N','Y') | NO | | N | | | Super_priv | enum('N','Y') | NO | | N | | | Create_tmp_table_priv | enum('N','Y') | NO | | N | | | Lock_tables_priv | enum('N','Y') | NO | | N | | | Execute_priv | enum('N','Y') | NO | | N | | | Repl_slave_priv | enum('N','Y') | NO | | N | | | Repl_client_priv | enum('N','Y') | NO | | N | | | Create_view_priv | enum('N','Y') | NO | | N | | | Show_view_priv | enum('N','Y') | NO | | N | | | Create_routine_priv | enum('N','Y') | NO | | N | | | Alter_routine_priv | enum('N','Y') | NO | | N | | | Create_user_priv | enum('N','Y') | NO | | N | | | Event_priv | enum('N','Y') | NO | | N | | | Trigger_priv | enum('N','Y') | NO | | N | | | Create_tablespace_priv | enum('N','Y') | NO | | N | | | Delete_history_priv | enum('N','Y') | NO | | N | | | ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | | | ssl_cipher | blob | NO | | NULL | | | x509_issuer | blob | NO | | NULL | | | x509_subject | blob | NO | | NULL | | | max_questions | int(11) unsigned | NO | | 0 | | | max_updates | int(11) unsigned | NO | | 0 | | | max_connections | int(11) unsigned | NO | | 0 | | | max_user_connections | int(11) | NO | | 0 | | | plugin | char(64) | NO | | | | | authentication_string | text | NO | | NULL | | | password_expired | enum('N','Y') | NO | | N | | | is_role | enum('N','Y') | NO | | N | | | default_role | char(80) | NO | | | | | max_statement_time | decimal(12,6) | NO | | 0.000000 | | +------------------------+-----------------------------------+------+-----+----------+-------+ 47 rows in set (0.001 sec) MariaDB [mysql]>
Notez la longueur des champs User et Host :
Champs | Longueur |
---|---|
Host | 60 |
User | 80 |
Les mots de passe sous MariaDB sont hachés avant d'être stockés. Le type de hachage a été modifié à partir de la version 4.1.1 de MySQL. Cet ancien type de hachage est pourtant toujours disponible avec la fonction old_password :
MariaDB [mysql]> SELECT password('root'); +-------------------------------------------+ | password('root') | +-------------------------------------------+ | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | +-------------------------------------------+ 1 row in set (0.000 sec) MariaDB [mysql]> SELECT old_password('root'); +----------------------+ | old_password('root') | +----------------------+ | 67457e226a1a15bd | +----------------------+ 1 row in set (0.000 sec) MariaDB [mysql]>
MariaDB utilise des Plug-ins d'authentification. La méthode d'authentification par défaut est implémenté par le plug-in mysql-native-password :
MariaDB [mysql]> SHOW PLUGINS; +-------------------------------+----------+--------------------+---------+---------+ | Name | Status | Type | Library | License | +-------------------------------+----------+--------------------+---------+---------+ | binlog | ACTIVE | STORAGE ENGINE | NULL | GPL | | mysql_native_password | ACTIVE | AUTHENTICATION | NULL | GPL | | mysql_old_password | ACTIVE | AUTHENTICATION | NULL | GPL | | wsrep | ACTIVE | STORAGE ENGINE | NULL | GPL | | CSV | ACTIVE | STORAGE ENGINE | NULL | GPL | | MEMORY | ACTIVE | STORAGE ENGINE | NULL | GPL | | MyISAM | ACTIVE | STORAGE ENGINE | NULL | GPL | | MRG_MyISAM | ACTIVE | STORAGE ENGINE | NULL | GPL | | CLIENT_STATISTICS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INDEX_STATISTICS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | TABLE_STATISTICS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | USER_STATISTICS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | SQL_SEQUENCE | ACTIVE | STORAGE ENGINE | NULL | GPL | | ARCHIVE | ACTIVE | STORAGE ENGINE | NULL | GPL | | BLACKHOLE | ACTIVE | STORAGE ENGINE | NULL | GPL | | FEDERATED | ACTIVE | STORAGE ENGINE | NULL | GPL | | InnoDB | ACTIVE | STORAGE ENGINE | NULL | GPL | | INNODB_TRX | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_LOCKS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_LOCK_WAITS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMP | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMP_RESET | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMPMEM | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMPMEM_RESET | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMP_PER_INDEX | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMP_PER_INDEX_RESET | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_BUFFER_PAGE | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_BUFFER_PAGE_LRU | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_BUFFER_POOL_STATS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_METRICS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_FT_DEFAULT_STOPWORD | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_FT_DELETED | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_FT_BEING_DELETED | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_FT_CONFIG | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_FT_INDEX_CACHE | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_FT_INDEX_TABLE | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_SYS_TABLES | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_SYS_TABLESTATS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_SYS_INDEXES | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_SYS_COLUMNS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_SYS_FIELDS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_SYS_FOREIGN | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_SYS_FOREIGN_COLS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_SYS_TABLESPACES | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_SYS_DATAFILES | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_SYS_VIRTUAL | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_MUTEXES | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_SYS_SEMAPHORE_WAITS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_TABLESPACES_ENCRYPTION | ACTIVE | INFORMATION SCHEMA | NULL | BSD | | INNODB_TABLESPACES_SCRUBBING | ACTIVE | INFORMATION SCHEMA | NULL | BSD | | Aria | ACTIVE | STORAGE ENGINE | NULL | GPL | | PERFORMANCE_SCHEMA | ACTIVE | STORAGE ENGINE | NULL | GPL | | SEQUENCE | ACTIVE | STORAGE ENGINE | NULL | GPL | | FEEDBACK | DISABLED | INFORMATION SCHEMA | NULL | GPL | | user_variables | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | partition | ACTIVE | STORAGE ENGINE | NULL | GPL | +-------------------------------+----------+--------------------+---------+---------+ 56 rows in set (0.001 sec) MariaDB [mysql]> exit Bye
Important - Le plug-in mysql_old_password implémente l'ancien type de hachage. Les modifications des mots de passe ne prennent effet que lors de la connexion suivante du l'utilisateur. MariaDB propose 5 types de hachage : crc32, MD5, SHA1, PASSWORD et OLD_PASSWORD. Les algorithmes PASSWORD et OLD_PASSWORD de MariaDB sont internes à MariaDB.
Veuillez noter que toutes les requêtes saisies sont journalisées dans votre fichier historique de MariaDB. Par défaut ce fichier est ~/.mysql_history. Les mots de passe saisis sont en clair :
[root@centos8 ~]# tail .mysql_history SELECT user, host, password FROM user; DESCRIBE user; SELECT password('root'); SELECT old_password('root'); SHOW PLUGINS; FLUSH PRIVILEGES; SET PASSWORD FOR 'root'@'localhost' = PASSWORD('fenestros'); use mysql; update user set password=PASSWORD("mysql") where User='root'; flush privileges;
Il convient donc de protéger ce fichier !
Important - Pour ne pas garder trace de l'historique, il est pratique courante de créer un lien symbolique vers /dev/null : # ls -s /dev/null $HOME/.mysql_history
Lors de la connexion d'un utilisateur, MariaDB utilise les trois champs User, Password et Host. MariaDB trie la table ainsi obtenue du privilège le plus restrictif au privilège le moins restrictif.
La table suivante:
+-------+------------------------+-------------------------------------------+ | user | host | password | +-------+------------------------+-------------------------------------------+ | root | localhost | *00269BA49BEC800F9CCF34C20C1FD83E0236B89A | | root | centos8.ittraining.loc | | | root | 127.0.0.1 | | | root | ::1 | | | user1 | localhost | *34D3B87A652E7F0D1D371C3DBF28E291705468C4 | +-------+------------------------+-------------------------------------------+
est vue par MariaDB ainsi:
+-------+-----------------------+-------------------------------------------+ | user | host | password | +-------+-----------------------+-------------------------------------------+ | root | 127.0.0.1 | | | root | ::1 | | | root | localhost | *00269BA49BEC800F9CCF34C20C1FD83E0236B89A | | user1 | localhost | *34D3B87A652E7F0D1D371C3DBF28E291705468C4 | | root | centos8.fenestros.loc | | +-------+-----------------------+-------------------------------------------+
Prenons le cas d'une connexion de root à partir du localhost. Dans ce cas, MariaDB commence par rechercher l'hôte localhost. Deux lignes correspondent:
... | root | localhost | *00269BA49BEC800F9CCF34C20C1FD83E0236B89A | | user1 | localhost | *34D3B87A652E7F0D1D371C3DBF28E291705468C4 | ...
MariaDB recherche ensuite le nom de l'utilisateur, dans notre cas root. Une ligne correspond:
... | root | localhost | *00269BA49BEC800F9CCF34C20C1FD83E0236B89A | ...
MariaDB compare ensuite le mot de passe saisi par root avec le mot de passe crypté dans la table. Dans le cas où les deux mots de passe sont équivalents, l'accès est accordé. Dans le cas contraire, l'accès est refusé.
La commande GRANT permet de:
La commande prend la forme suivante:
mysql> GRANT privileges [columns] ON objet TO utilisateur [IDENTIFIED BY 'password'] [WITH GRANT OPTION]; [Entrée]
où:
Saisissez la commande suivante pour créer un nouvel utilisateur:
[root@centos8 ~]# mysql -uroot -p Enter password: fenestros Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 9 Server version: 10.3.28-MariaDB-log 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)]> USE mysql; 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]> GRANT usage ON *.* TO user2@localhost IDENTIFIED BY 'motdepasse'; Query OK, 0 rows affected (0.00 sec) MariaDB [mysql]>
Important - La portée des droits *.* implique tous les objets. La portée des droits peut également être de type schema.*, autrement dit tous les objets d'une base ou de type schema.table pour une table précise.
Vous pouvez aussi utiliser * qui implique tous les objets de la base courante dans le cas où la commande USE a été utilisée.
Vérifiez que l'utilisateur a bien été créé :
MariaDB [mysql]> SELECT host, user, password FROM user; +-----------------------+-------+-------------------------------------------+ | host | user | password | +-----------------------+-------+-------------------------------------------+ | localhost | root | *00269BA49BEC800F9CCF34C20C1FD83E0236B89A | | centos8.fenestros.loc | root | | | 127.0.0.1 | root | | | ::1 | root | | | localhost | user1 | *34D3B87A652E7F0D1D371C3DBF28E291705468C4 | | localhost | user2 | *1F48A8CB9F3BAAE4504A9A4549B0AA290BD4E27B | +-----------------------+-------+-------------------------------------------+ 6 rows in set (0.00 sec) MariaDB [mysql]> exit bye
Connectez-vous maintenant à MariaDB avec le compte d'user2 :
[root@centos8 ~]# mysql -uuser2 -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 10 Server version: 10.3.28-MariaDB-log 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)]> SHOW databases; +--------------------+ | Database | +--------------------+ | information_schema | +--------------------+ 1 row in set (0.000 sec) MariaDB [(none)]> USE mysql; ERROR 1044 (42000): Access denied for user 'user2'@'localhost' to database 'mysql' MariaDB [(none)]> exit Bye
Notez que l'utilisateur user2 n'a pas accès aux bases de données ! En effet, il ne peut que se connecter à MariaDB.
La commande REVOKE est utilisée pour retirer les privilèges. La commande REVOKE ne permet pas de supprimer l'utilisateur. Pour supprimer un utilisateur, il convient d'utiliser la commande SQL DELETE.
La commande REVOKE prend la forme suivante:
MariaDB [(none)]> REVOKE privileges [columns] ON objet FROM utilisateur; [Entrée]
Par exemple pour retirer les privilèges de l'utilisateur user2, connectez-vous à mysql en tant que root et saisissez la commande suivante:
MariaDB [(none)]> REVOKE all ON *.* FROM user2@localhost; [Entrée]
Notez l'utilisation du mot clef all pour enlever tous les privilèges.
Pour modifier le mot de passe d'un utilisateur, trois commandes SQL existent.
En utilisant SET PASSWORD :
MariaDB [(none)]> SET PASSWORD FOR utilisateur@host=PASSWORD('nouveau_mot_de_passe'); [Entrée]
Notez l'utilisation de la directive PASSWORD() pour encrypter le mot de passe.
En utilisant GRANT :
MariaDB [(none)]> GRANT usage ON *.* TO utilisateur@host IDENTIFIED BY 'nouveau_mot_de_passe'; [Entrée]
En utilisant UPDATE USER :
MariaDB [(none)]> UPDATE user SET PASSWORD=PASSWORD('nouveau_mot_de_passe') WHERE user='utilisateur' AND host='host'; [Entrée]
Important - N'oubliez pas qu'après chaque modification, vous devez utiliser la commande FLUSH PRIVILEGES.
A Faire : Utilisez SET PASSWORD et UPDATE USER à tour de rôle pour modifier le mot de passe de l'utilisateur user2 et connectez-vous après chaque modification pour vérifier que cette dernière a été réussie,
Pour vérifier si votre instance de MariaDB peut fonctionner avec openssl, il convient de saisir la commande suivante:
[root@centos8 ~]# mysql -uroot -p Enter password: fenestros Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 11 Server version: 10.3.28-MariaDB-log 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)]> SHOW VARIABLES LIKE 'have_openssl'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | have_openssl | YES | +---------------+-------+ 1 row in set (0.001 sec) MariaDB [(none)]> exit Bye
votre instance de MariaDB peut accepter des connexions sécurisées. Si la variable have_openssl indique DISABLED, cela signifie que le support est disponible mais non activé :
Lors de l'installation du paquet openssl, une clef privée et un certificat d'exemple ont été générés dans le répertoire /etc/pki :
[root@centos8 ~]# ls -lR /etc/pki | more /etc/pki: total 0 drwxr-xr-x. 4 root root 73 Jun 16 2021 ca-trust drwxr-xr-x. 2 root root 6 Jun 29 2021 consumer drwxr-xr-x. 2 root root 6 Jun 29 2021 entitlement drwxr-xr-x. 2 root root 111 Jul 19 2021 fwupd drwxr-xr-x. 2 root root 111 Jul 19 2021 fwupd-metadata drwxr-xr-x. 2 root root 21 Jun 16 2021 java drwxr-xr-x. 2 root root 103 Jun 16 2021 nssdb drwxrwx---. 2 pesign pesign 54 Jul 19 2021 pesign drwxrwxr-x. 2 pesign pesign 54 Jul 19 2021 pesign-rh-test drwxr-xr-x. 2 root root 6 Jun 16 2021 product drwxr-xr-x. 2 root root 6 Jun 16 2021 product-default drwxr-xr-x. 2 root root 73 Jun 16 2021 rpm-gpg drwx------. 2 root root 6 Jun 1 2021 rsyslog drwxr-xr-x. 5 root root 104 Jun 16 2021 tls /etc/pki/ca-trust: total 8 -rw-r--r--. 1 root root 980 Aug 11 2020 ca-legacy.conf drwxr-xr-x. 6 root root 70 Jun 16 2021 extracted -rw-r--r--. 1 root root 166 Aug 11 2020 README drwxr-xr-x. 4 root root 80 Jun 16 2021 source /etc/pki/ca-trust/extracted: total 4 drwxr-xr-x. 2 root root 39 Jun 16 2021 edk2 drwxr-xr-x. 2 root root 35 Jun 16 2021 java drwxr-xr-x. 2 root root 47 Jun 16 2021 openssl drwxr-xr-x. 2 root root 101 Jun 16 2021 pem -rw-r--r--. 1 root root 560 Aug 11 2020 README /etc/pki/ca-trust/extracted/edk2: total 160 -r--r--r--. 1 root root 156842 Jun 16 2021 cacerts.bin -rw-r--r--. 1 root root 566 Aug 11 2020 README /etc/pki/ca-trust/extracted/java: total 160 -r--r--r--. 1 root root 157499 Jun 16 2021 cacerts -rw-r--r--. 1 root root 726 Aug 11 2020 README /etc/pki/ca-trust/extracted/openssl: total 248 -r--r--r--. 1 root root 249827 Jun 16 2021 ca-bundle.trust.crt -rw-r--r--. 1 root root 787 Aug 11 2020 README /etc/pki/ca-trust/extracted/pem: total 376 -r--r--r--. 1 root root 163655 Jun 16 2021 email-ca-bundle.pem -r--r--r--. 1 root root 0 Jun 16 2021 objsign-ca-bundle.pem -rw-r--r--. 1 root root 898 Aug 11 2020 README -r--r--r--. 1 root root 216090 Jun 16 2021 tls-ca-bundle.pem /etc/pki/ca-trust/source: total 4 drwxr-xr-x. 2 root root 6 Aug 11 2020 anchors drwxr-xr-x. 2 root root 6 Aug 11 2020 blacklist --More-- [q]
Pour configurer MariaDB pour SSL, il convient d'abord d'arrêter le service :
[root@centos8 ~]# systemctl stop mariadb
Dans cet exemple, vous allez créer vos propres clefs et certificats. Commencez par créer une cléf :
[root@centos8 ~]# mkdir /etc/pki/mysql [root@centos8 ~]# cd /etc/pki/mysql/ [root@centos8 mysql]# openssl genrsa 2048 > ca-key.pem Generating RSA private key, 2048 bit long modulus (2 primes) ...+++++ .....+++++ e is 65537 (0x010001)
Créez ensuite le fichier ca-cert.pem :
[root@centos8 mysql]# openssl req -new -x509 -nodes -days 1000 -key ca-key.pem > ca-cert.pem You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:GB State or Province Name (full name) []:SURREY Locality Name (eg, city) [Default City]:ADDLESTONE Organization Name (eg, company) [Default Company Ltd]:I2TCH LIMITED Organizational Unit Name (eg, section) []:TRAINING Common Name (eg, your name or your server's hostname) []:centos8.ittraining.loc Email Address []:infos@i2tch.co.uk [root@centos8 mysql]#
Créer ensuite le CSR du serveur :
[root@centos8 mysql]# openssl req -newkey rsa:2048 -days 1000 -nodes -keyout server-key.pem > server-req.pem Ignoring -days; not generating a certificate Generating a RSA private key ......+++++ ....+++++ writing new private key to 'server-key.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:GB State or Province Name (full name) []:SURREY Locality Name (eg, city) [Default City]:ADDLESTONE Organization Name (eg, company) [Default Company Ltd]:I2TCH LIMITED Organizational Unit Name (eg, section) []:TRAINING Common Name (eg, your name or your server's hostname) []:server8.ittraining.loc Email Address []:infos@i2tch.loc Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: [root@centos8 mysql]#
Créer ensuite le certificat du serveur :
[root@centos8 mysql]# openssl x509 -req -in server-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem Signature ok subject=C = GB, ST = SURREY, L = ADDLESTONE, O = I2TCH LIMITED, OU = TRAINING, CN = server8.ittraining.loc, emailAddress = infos@i2tch.loc Getting CA Private Key [root@centos8 mysql]#
Créer maintenant le certificat du client:
[root@centos8 mysql]# openssl req -newkey rsa:2048 -days 1000 -nodes -keyout client-key.pem > client-req.pem Ignoring -days; not generating a certificate Generating a RSA private key ...........................+++++ ..+++++ writing new private key to 'client-key.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:FR State or Province Name (full name) []:IDF Locality Name (eg, city) [Default City]:PARIS Organization Name (eg, company) [Default Company Ltd]:I2TCH EUROPE Organizational Unit Name (eg, section) []:FORMATION Common Name (eg, your name or your server's hostname) []:centos8.ittraining.loc Email Address []:infos@i2tch.eu Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: [root@centos8 mysql]# ls -l total 28 -rw-r--r--. 1 root root 1497 Nov 9 01:41 ca-cert.pem -rw-r--r--. 1 root root 1675 Nov 9 01:37 ca-key.pem -rw-------. 1 root root 1704 Nov 9 01:46 client-key.pem -rw-r--r--. 1 root root 1070 Nov 9 01:47 client-req.pem -rw-r--r--. 1 root root 1346 Nov 9 01:45 server-cert.pem -rw-------. 1 root root 1704 Nov 9 01:42 server-key.pem -rw-r--r--. 1 root root 1082 Nov 9 01:44 server-req.pem [root@centos8 mysql]# openssl x509 -req -in client-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem Signature ok subject=C = FR, ST = IDF, L = PARIS, O = I2TCH EUROPE, OU = FORMATION, CN = centos8.ittraining.loc, emailAddress = infos@i2tch.eu Getting CA Private Key
Vérifiez ensuite vos certificats :
[root@centos8 mysql]# openssl verify -CAfile ca-cert.pem server-cert.pem client-cert.pem server-cert.pem: OK client-cert.pem: OK
Modifiez le propriétaire de tous les fichiers dans le répertoire /etc/pki/mysql :
[root@centos8 mysql]# chown -R mysql:mysql /etc/pki/mysql
Modifiez votre fichier /etc/my.cnf.d/mariadb-server.cnf :
[root@centos8 mysql]# vi /etc/my.cnf.d/mariadb-server.cnf [root@centos8 mysql]# cat /etc/my.cnf.d/mariadb-server.cnf # # These groups are read by MariaDB server. # Use it for options that only the server (but not clients) should see # # See the examples of server my.cnf files in /usr/share/mysql/ # # this is read by the standalone daemon and embedded servers [server] # this is only for the mysqld standalone daemon # Settings user and group are ignored when systemd is used. # If you need to run mysqld under a different user or group, # customize your systemd unit file for mysqld/mariadb according to the # instructions in http://fedoraproject.org/wiki/Systemd [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock log-error=/var/log/mariadb/mariadb.log pid-file=/run/mariadb/mariadb.pid slow_query_log slow_query_log_file = /var/log/mysql-slow.log long-query-time = 2 log_output = TABLE ssl-ca=/etc/pki/mysql/ca-cert.pem ssl-cert=/etc/pki/mysql/server-cert.pem ssl-key=/etc/pki/mysql/server-key.pem # # * Galera-related settings # [galera] # Mandatory settings #wsrep_on=ON #wsrep_provider= #wsrep_cluster_address= #binlog_format=row #default_storage_engine=InnoDB #innodb_autoinc_lock_mode=2 # # Allow server to accept connections on all interfaces. # #bind-address=0.0.0.0 # # Optional setting #wsrep_slave_threads=1 #innodb_flush_log_at_trx_commit=0 # this is only for embedded server [embedded] # This group is only read by MariaDB servers, not by MySQL. # If you use the same .cnf file for MySQL and MariaDB, # you can put MariaDB-only options here [mariadb] # This group is only read by MariaDB-10.3 servers. # If you use the same .cnf file for MariaDB of different versions, # use this group for options that older servers don't understand [mariadb-10.3]
Modifiez votre fichier /etc/my.cnf.d/client.cnf :
[root@centos8 mysql]# vi /etc/my.cnf.d/client.cnf [root@centos8 mysql]# cat /etc/my.cnf.d/client.cnf # # These two groups are read by the client library # Use it for options that affect all clients, but not the server # [client] ssl-ca=/etc/pki/mysql/ca-cert.pem ssl-cert=/etc/pki/mysql/client-cert.pem ssl-key=/etc/pki/mysql/client-key.pem # This group is not read by mysql client library, # If you use the same .cnf file for MySQL and MariaDB, # use it for MariaDB-only client options [client-mariadb]
Démarrez votre serveur MariaDB :
[root@centos8 mysql]# systemctl start mariadb [root@centos8 mysql]# systemctl status mariadb ● mariadb.service - MariaDB 10.3 database server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2022-11-09 02:06:20 EST; 11s ago Docs: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Process: 27397 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, status=0/SUCCESS) Process: 27326 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mariadb.service (code=exited, status=0/SUCCESS) Process: 27301 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS) Main PID: 27366 (mysqld) Status: "Taking your SQL requests now..." Tasks: 30 (limit: 100949) Memory: 71.8M CGroup: /system.slice/mariadb.service └─27366 /usr/libexec/mysqld --basedir=/usr Nov 09 02:06:20 centos8.ittraining.loc systemd[1]: Starting MariaDB 10.3 database server... Nov 09 02:06:20 centos8.ittraining.loc mysql-prepare-db-dir[27326]: Database MariaDB is probably initialized in /var/lib/mysql already, nothing is done. Nov 09 02:06:20 centos8.ittraining.loc mysql-prepare-db-dir[27326]: If this is not the case, make sure the /var/lib/mysql is empty before running mysql-prepare-db-dir. Nov 09 02:06:20 centos8.ittraining.loc mysqld[27366]: 2022-11-09 2:06:20 0 [Note] /usr/libexec/mysqld (mysqld 10.3.28-MariaDB-log) starting as process 27366 ... Nov 09 02:06:20 centos8.ittraining.loc mysqld[27366]: 2022-11-09 2:06:20 0 [Warning] Although a path was specified for the --log-slow-queries option, log tables are used. To enable logging to files use the --> Nov 09 02:06:20 centos8.ittraining.loc systemd[1]: Started MariaDB 10.3 database server.
Vérifiez que MariaDB fonctionne en mode SSL :
[root@centos8 mysql]# mysql -u root -p Enter password: fenestros Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 8 Server version: 10.3.28-MariaDB-log 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)]> show status like 'Ssl_cipher'; +---------------+------------------------+ | Variable_name | Value | +---------------+------------------------+ | Ssl_cipher | TLS_AES_256_GCM_SHA384 | +---------------+------------------------+ 1 row in set (0.000 sec) MariaDB [(none)]>
Supprimez votre utilisateur user2:
MariaDB [(none)]> USE mysql; 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]> DELETE FROM user WHERE User='user2'; Query OK, 1 row affected (0.000 sec) MariaDB [mysql]>
Créez maintenant votre utilisateur user2 afin que celui-ci se connecte en utilisant SSL:
MariaDB [mysql]> GRANT usage ON *.* TO user2@localhost IDENTIFIED BY 'motdepasse' REQUIRE SSL; Query OK, 0 rows affected (0.000 sec) MariaDB [mysql]>
Saisissez enfin la commande suivante pour mettre à jour les privilèges:
MariaDB [mysql]> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.000 sec) MariaDB [mysql]>
Connectez-vous maintenant en utilisant le compte d'user2.
MariaDB [mysql]> exit Bye [root@centos8 mysql]# mysql -u user2 -p Enter password: motdepasse Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 10 Server version: 10.3.28-MariaDB-log 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)]>
Copyright © 2022 Hugh Norris.