Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment déployer MySQL sur Ubuntu et entièrement géré

Dans cet article de blog, nous vous montrerons un guide étape par étape sur la façon d'installer et de configurer un serveur MySQL à la fois manuellement sur le système d'exploitation Ubuntu 20.04, ainsi qu'en utilisant le service de base de données gérée de ScaleGrid. Dans les sections suivantes de ce didacticiel, nous vous aiderons à chaque étape pour configurer avec succès votre propre serveur MySQL et le configurer correctement.

Un peu sur MySQL et Ubuntu

MySQL est un système de gestion de base de données relationnelle (SGBD) open source. Il fonctionne sur des serveurs Windows et Linux et est généralement installé dans le cadre de la pile LAMP (Linux, Apache, MySQL, PHP/Python/Perl) ou de la pile LEMP (Linux, Nginx, MySQL, PHP). C'est un choix judicieux si vous savez que vous avez simplement besoin d'une base de données, car il s'agit d'un système basé sur SQL rapide, simple et évolutif et est considéré comme le système de gestion de base de données relationnelle le plus populaire.

Bien qu'Ubuntu soit l'un des systèmes d'exploitation de bureau open source les plus populaires au monde, Ubuntu 20.04 offre une stabilité, une résilience et une sécurité encore meilleures dans un modèle rentable.

Comment installer MySQL sur Ubuntu 20.04

Avant de plonger dans le processus d'installation d'un serveur MySQL sur Ubuntu, gardez à l'esprit ces prérequis :

  • Un serveur Ubuntu 20.04 avec un utilisateur administrateur ou sudo non root pour effectuer les étapes faisant autorité et un pare-feu configuré UFW
  • Le système doit être mis à jour en utilisant :
    • sudo apt update
    • sudo apt upgrade -y
  • Une connexion réseau stable

Nouvelle installation de MySQL sur Ubuntu 20.04

Installer MySQL

Pour installer MySQL sur Ubuntu 20.04, une simple commande (apt install mysql server) peut être exécutée car le package d'installation fait partie du référentiel officiel Ubuntu 20.04.

apt install mysql-server -y

Sécuriser l'installation du serveur MySQL

Le serveur MySQL a un script pré-construit pour son installation sécurisée. Comme pratique courante pour en faire une installation sécurisée, exécutez ce script après la commande d'installation. Ce qu'il fait, c'est qu'il permet à l'utilisateur de définir le mot de passe root pour MySQL, de désactiver l'accessibilité du compte root depuis l'extérieur de l'hôte local, de supprimer les comptes d'utilisateurs anonymes et également de supprimer la base de données de test accessible aux utilisateurs anonymes. Ce script peut être appelé avec ce sudo commande :

sudo mysql_secure_installation

Une série d'invites s'affiche après l'exécution du script d'installation sécurisée. La première invite est de configurer VALIDATE PASSWORD COMPONENT . Cette invite (si sélectionnée) effectuera la validation lors de la création du mot de passe de l'utilisateur. Il ne vous laissera créer le mot de passe que s'il correspond aux normes de mot de passe sur MySQL.

Configuration du mot de passe root

L'invite suivante permet de configurer le mot de passe pour root. L'utilisateur doit définir ce mot de passe. Répondez à toutes les invites suivantes par "Oui", car il s'agit d'une meilleure pratique du point de vue de la sécurité.

Configuration SSL pour l'installation du serveur MySQL

Il arrive parfois, après l'installation de MySQL, que le serveur de base de données soit configuré sur une machine physique distincte, soit sur le même réseau, soit sur un réseau différent. Pour communiquer avec une telle base de données, la communication doit être sécurisée et cryptée. Par conséquent, les certificats SSL doivent être installés et activés sur le serveur de base de données. Le protocole SSL utilise une paire de clés pour authentifier, sécuriser et gérer les connexions sécurisées. Utilisez la commande suivante pour générer des clés SSL :

sudo mysql_ssl_rsa_setup --uid=mysql

Leur répertoire par défaut contient ces clés, et vous pouvez les trouver en appelant la commande suivante :

sudo sudo find /var/lib/mysql -name '*.pem' -ls

mysql> \s

En appelant la commande ci-dessus à partir de l'invite SQL, vous pouvez confirmer que SSL est actif en recherchant la ligne indiquant SSL: Cipher in use is […] , comme le montre l'image ci-dessous.

Sécuriser votre base de données

La sécurité de la base de données est l'un des éléments les plus critiques à prendre en compte lors de la planification de l'installation de MySQL. Les attaquants sont toujours à la recherche de moyens d'accéder par une porte dérobée aux systèmes de bases de données et d'obtenir des informations privilégiées sur la cible. Changer son port par défaut est un moyen simple d'augmenter la sécurité de votre base de données. Cela peut être changé dans le fichier de configuration à /etc/mysql/mysql.conf.d/mysqld.cnf .

Créer un utilisateur et une base de données MySQL

En utilisant cette commande simple, vous pouvez créer un compte utilisateur de base de données MySQL avec son mot de passe :

CREATE USER 'Username' @ 'localhost'  IDENTIFIED BY 'StrongPassword';

Le champ localhost dans le CREATE USER La commande indique que l'utilisateur se connectera à partir du même serveur. Elle peut être remplacée par une adresse IP si vous souhaitez vous connecter depuis une machine avec une adresse IP spécifique, ou elle peut être remplacée par un signe de pourcentage % si l'utilisateur souhaite accéder à la base de données de n'importe où.

Si vous souhaitez uniquement créer une base de données, vous pouvez la créer à l'aide de la commande suivante :

CREATE DATABASE databasename;

Après avoir créé l'utilisateur et la base de données, l'utilisateur recevra les autorisations requises pour la base de données.

Les autorisations peuvent être de n'importe quel type; par exemple, CREATE , ALTER , INSERT , UPDATE , DELETE , SELECT , RELOAD , etc. Habituellement, le propriétaire de la base de données a besoin de toutes les autorisations et ces autorisations peuvent être attribuées indépendamment à un utilisateur. Toutes ces autorisations peuvent être accordées en même temps à l'aide de la commande.

GRANT ALL PRIVILEGES ON databasename.tablename TO 'username' @ 'localhost';

Encore une fois, le mot-clé localhost peut être remplacé par une adresse IP ou par le % signer, si l'utilisateur a l'intention de se connecter à partir d'une adresse IP spécifique ou de toute autre source.

Les privilèges d'un utilisateur peuvent être vus via la commande SHOW GRANTS

SHOW GRANTS for 'databaseuser'@'localhost';

Tous les privilèges peuvent être révoqués pour un utilisateur à l'aide de la commande :

REVOKE ALL PRIVILEGES ON database.name.* FROM 'database.user'@'localhost';

Ici, vous pouvez voir qu'après avoir exécuté le REVOKE commande, il n'y a pas de privilèges pour l'utilisateur jason .

Créer et supprimer des tableaux

Il est facile d'ajouter ou de supprimer des tables de votre base de données. Il vous suffit d'utiliser l'une des commandes suivantes :

DROP TABLE databasename.tablename

CREATE TABLE databasename.tablename ( column1 datatype,column2 datatype ,column3 datatype);

Le paramètre de colonne spécifie le nom, tandis que le paramètre de type de données spécifie le type de données que contient la colonne.

Il y a des moments où une clé primaire doit être ajoutée à une colonne. Une clé primaire vous permet d'identifier de manière unique chaque entrée de votre table. Cela peut être fait en le mentionnant dans le CREATE TABLE commande. L'exemple ci-dessous crée une colonne user_id avec une clé primaire auto-incrémentée. Gardez à l'esprit que la clé primaire doit contenir des valeurs uniques et ne peut pas contenir de valeurs nulles

Ajouter ou supprimer des colonnes dans un tableau

Des colonnes peuvent également être ajoutées ou supprimées d'une table spécifique d'une base de données après sa création.

Pour ce faire, modifiez la base de données que vous souhaitez modifier en utilisant le use database_name commande.

Par la suite, les commandes suivantes ajouteront et supprimeront une colonne :

ALTER TABLE tablename ADD columnname datatype;
ALTER TABLE tablename DROP columnname;

Insérer des données dans un tableau

Insérez des données dans un tableau à l'aide de la commande suivante :

INSERT INTO tablename (column1,column2,column3) VALUES ('value1','value2','value3' );

Vous devrez spécifier les noms de colonne et la valeur à insérer dans chaque colonne dans l'ordre. Si vous souhaitez insérer des valeurs dans chaque colonne d'un tableau, vous pouvez simplement omettre les colonnes et commencer à spécifier les valeurs directement après le nom du tableau :

INSERT INTO tablename VALUES ('value1','value2','value3' );

Update Data in a Table

Utilisez la commande suivante pour mettre à jour les données d'un tableau :

UPDATE tablename SET columnname= 'newvalue'  WHERE columnname='value'

Le WHERE condition indique dans quelle ligne les données doivent être mises à jour. Si la condition n'est pas spécifiée, les données sont mises à jour dans toutes les lignes de la colonne spécifiée.

Sélectionner les données d'un tableau

Pour sélectionner et afficher les données de colonnes particulières d'un tableau, utilisez la commande suivante :

SELECT column1,column2 FROM tablename;

Cependant, pour sélectionner toutes les colonnes d'une table, la commande utilisée est :

SELECT * FROM tablename;

Activer la journalisation binaire

L'activation de la journalisation binaire dans le serveur de base de données MySQL vous permet de consigner les requêtes qui ont apporté des modifications à la base de données. La journalisation binaire est une fonctionnalité utile à activer si vous devez, par exemple, résoudre un problème causé par une requête dans la base de données.

Pour activer la journalisation binaire, ajoutez la ligne suivante dans le fichier de configuration à /etc/mysql/mysql.conf.d/mysqld.cnf .

log-bin=mysql-bin.log

Pour confirmer si la journalisation binaire est active, appelez la commande suivante à partir du shell MySQL :

show variables like  '% log_bin%'

Par défaut, les fichiers journaux binaires sont stockés dans /var/lib/mysql répertoire dans la plupart des distributions Linux, y compris Ubuntu.

Configurer la réplication asynchrone simple

MySQL prend en charge la réplication, ce qui est pratique lors de la planification d'une reprise après sinistre et en s'assurant de minimiser le risque de temps d'arrêt. MySQL prend en charge deux types de réplication :

  • Réplication semi-synchrone
  • Réplication asynchrone

Avec la réplication semi-synchrone, lorsqu'une source valide une transaction, toutes les répliques auront également validé la transaction avant que la source ne revienne à la session qui a effectué la transaction. L'inconvénient est qu'il entraîne un retard important dans l'achèvement de la transaction en raison du système de transaction susmentionné.

Alors qu'avec la réplication asynchrone, la source écrit les événements dans son journal binaire et les répliques les demandent lorsqu'elles sont prêtes. Cependant, il n'y a aucune garantie qu'un événement atteindra jamais une réplique.

Par défaut, MySQL a activé la réplication asynchrone en raison de son temps de traitement rapide. Néanmoins, l'inconvénient majeur est que si la base de données source échoue, il n'y a aucun moyen de récupérer les données qui n'ont pas terminé les transactions vers les bases de données répliquées. D'autre part, le mode de réplication semi-synchrone se concentre davantage sur la disponibilité et la durabilité des données, mais est très lent. Le choix d'un mode de réplication dépend uniquement des besoins spécifiques de l'utilisateur concernant la configuration de sa base de données.

Dans le fichier my.cnf pour le serveur source et le serveur réplica, vous pouvez écrire les ID de serveur respectivement comme :

server_id=1
server_id=2

Un utilisateur MySQL dédié peut être créé sur le serveur source, qui sera utilisé par le réplica pour se connecter au serveur source.

GRANT REPLICATION SLAVE ON *.* TO ‘masterusername’ @ 'ipaddress of slave server'
→ IDENTIFIED BY ‘masterpassword’;

Le processus de réplication sur le serveur réplica peut être lancé par :

mysql> CHANGE MASTER TO
-> MASTER_HOST='ip address',
-> MASTER_PORT=port number,
-> MASTER_USER='username',
-> MASTER_PASSWORD='password',
-> MASTER_LOG_FILE='',
-> MASTER_LOG_POS=4;
mysql> start slave;

Ces instructions lanceront la création du serveur réplica en tant que copie du serveur source.

Sauvegarder/Restaurer une base de données MySQL

Garder une sauvegarde de votre base de données est toujours une bonne idée, vous ne savez jamais quand vous pourriez en avoir besoin pour vous assurer que les données critiques ne sont pas perdues. Pour sauvegarder une base de données pour MySQL sur Ubuntu OS, exécutez simplement le suivant mysqldump commande :

sudo mysqldump -u root -p <database.name> > <filename.sql>

Pour restaurer une base de données supprimée, la base de données est d'abord créée avec le même nom dans MySQL. La base de données est ensuite restaurée avec la commande :

sudo mysql -u root -p <database.name> < <filename.sql>

La capture d'écran suivante supprime d'abord notre test_database, puis la recrée et tente de restaurer toutes ses données à partir de la sauvegarde créée précédemment. L'importation de données peut également être effectuée en suivant le même processus.

Conclusion sur l'installation de MySQL sur Ubuntu

Vous avez maintenant terminé avec succès les étapes de base pour installer MySQL sur Ubuntu 20.04. Une fois l'installation terminée, vous disposerez d'une base de données relationnelle opérationnelle que vous pourrez utiliser pour créer votre prochaine application ou site Web.

Si vous préférez que tout ce processus soit automatisé et géré par des experts, consultez la partie suivante de ce guide.

Utilisation de ScaleGrid pour configurer votre déploiement DigitalOcean MySQL

Dans cette partie du guide, nous utilisons notre solution d'hébergement MySQL entièrement gérée, car elle offre le débit le plus élevé et la latence la plus faible sur DigitalOcean. Pour en savoir plus, consultez l'article sur les meilleures performances MySQL DigitalOcean pour comparer les prix, la latence et les performances de débit de ScaleGrid et des bases de données gérées DigitalOcean.

L'ensemble du processus devrait prendre moins de 20 minutes, avec seulement quelques minutes au début pour personnaliser la configuration de votre déploiement MySQL et quelques minutes à la fin pour vous connecter à votre application. .

Après vous être inscrit pour un compte d'essai gratuit, la première chose à faire est de sélectionner MySQL comme base de données, DigitalOcean comme cloud et Hébergement dédié comme plan pour lancer le processus de création de cluster :

Étape 1. Saisissez les détails du déploiement MySQL

L'assistant de création de cluster s'ouvrira à la première étape où vous pourrez personnaliser les détails de base de votre déploiement. Saisissez un nom pour votre cluster à l'aide de caractères alphanumériques et utilisez un nom descriptif unique afin de pouvoir facilement reconnaître votre cluster ultérieurement.

Ensuite, sélectionnez le centre de données DigitalOcean que vous souhaitez utiliser pour votre serveur maître dans la liste déroulante de la région cloud - nous vous recommandons d'utiliser la même région que vos applications DigitalOcean Droplets pour le meilleur performance. Ensuite, vous pouvez sélectionner la taille de votre machine virtuelle pour les instances de DigitalOcean Droplet et la version de MySQL que vous souhaitez utiliser (toutes les versions majeures sont prises en charge). Le moteur de stockage InnoDB est la valeur par défaut pour tous les déploiements MySQL. Cliquez sur suivant.

Étape 2. Activer la réplication maître-esclave

À l'étape 2, vous pouvez activer la réplication maître-esclave MySQL de DigitalOcean pour ajouter une haute disponibilité à votre déploiement. La réplication est importante pour maintenir votre application disponible et en ligne pour vos utilisateurs en cas de panne de la région de votre centre de données DigitalOcean. Bien que DigitalOcean soit un fournisseur de cloud hautement fiable avec une disponibilité de 99,99 %, les centres de données tombent inévitablement en panne, donc la réplication de vos données vers des emplacements de centres de données supplémentaires vous permet de minimiser le risque de perte de données et de temps d'arrêt pour vos utilisateurs.

Si vous souhaitez continuer avec un déploiement autonome, cliquez sur suivant pour passer à l'étape 3 sans activer la configuration maître-esclave.

Remarque :la configuration maître-esclave n'est disponible que pour les comptes payants, vous ne pouvez pas configurer un déploiement d'ensemble de répliques pendant que vous êtes en mode d'essai.

Configurer la configuration maître-esclave MySQL

Il existe ici quelques options pour personnaliser votre configuration maître-esclave MySQL. Tout d'abord, vous pouvez choisir entre 2 + 1 Quorum ou 3 nœuds pour votre déploiement. Les deux offrent une haute disponibilité, mais dans la configuration de quorum 2 + 1, vous n'avez que 2 nœuds porteurs de données car le nœud de quorum sert de décideur en cas de basculement. Vous pouvez également contacter l'assistance pour personnaliser votre configuration maître-esclave afin d'ajouter plus de nœuds à votre déploiement.

Ensuite, vous pouvez choisir entre la réplication semi-synchrone et asynchrone. La réplication semi-synchrone garantit qu'au moins un esclave a reçu toutes les données que le maître a validées, garantissant que le basculement vers le bon esclave est sans perte. Dans la réplication asynchrone, chaque esclave se synchronise de manière asynchrone avec le maître, de sorte qu'un basculement de maître à esclave peut entraîner un basculement vers un serveur qui n'est pas entièrement synchronisé avec le maître actuel.

Enfin, personnalisez les emplacements du centre de données DigitalOcean que vous souhaitez utiliser pour vos nœuds esclaves. Une fois que vous avez terminé, cliquez sur suivant.

Comment configurer MySQL sur DigitalOceanCliquez pour tweeter

Étape 3. Activer SSL

À l'étape 3, vous pouvez activer SSL pour votre déploiement. Par défaut, le serveur MySQL installe et active toujours la configuration SSL, mais il n'est pas obligatoire que les clients se connectent à l'aide de SSL. Les clients peuvent choisir de se connecter avec ou sans SSL car le serveur autorise les deux types de connexions. Apprenez-en plus sur la configuration et la gestion de SSL dans ce didacticiel MySQL.

Étape 4. Configurer les pare-feu

Dans la dernière étape du processus de création de cluster, entrez au moins un CIDR IP qui sera autorisé à accéder à votre déploiement MySQL pour configurer votre règle de pare-feu. Vous pouvez trouver votre CIDR IP actuel en haut de la page. Ceux-ci peuvent être personnalisés ultérieurement au niveau du cluster et au niveau du compte. Une fois que vous l'avez saisi, cliquez sur Ajouter. Entrez tous les CIDR IP que vous souhaitez, puis cliquez sur suivant.

Étape 5. Réviser et créer

La dernière page fournit un bref résumé de votre nouveau cluster MySQL DigitalOcean. Passez en revue tous les détails et cliquez sur le bouton Précédent pour revenir à une étape précédente et modifier vos configurations. Une fois que vous êtes prêt, cliquez sur Créer pour lancer votre cluster.

Et c'est tout ! Votre déploiement est maintenant en cours de provisionnement ! Cela prend environ 15 minutes, donc pendant que vous attendez, vous pouvez vous familiariser avec les outils de gestion de MySQL dans la console - sauvegardes, restaurations, mise à l'échelle, alertes, analyse des requêtes, etc.

Se connecter et migrer

Une fois que l'état du cluster passe de « Création » à « En cours d'exécution », vous pouvez connecter votre déploiement. Il existe plusieurs façons de procéder :via votre chaîne de connexion à votre application, via la ligne de commande, via WordPress, via MySQL Workbench ou d'autres outils d'interface graphique populaires. Tous vos détails de connexion sont disponibles dans la moitié inférieure de l'onglet Présentation de la page des détails de votre cluster.

Visiter les onglets supérieurs pour créer une base de données MySQL et créer un utilisateur de base de données MySQL. Ceux-ci peuvent être consultés et gérés à tout moment depuis la console ScaleGrid.

Migrez votre installation MySQL existante en quelques minutes

La migration est également un processus automatisé qui ne nécessite que quelques détails de votre déploiement existant. Cliquez sur le bouton Importer des données sur votre onglet Présentation et entrez votre nom de serveur, port, nom(s) de base de données, nom d'utilisateur et mot de passe. Consultez notre documentation sur les migrations MySQL pour plus de détails et des options de migration supplémentaires.

Vous voulez essayer MySQL sur DigitalOcean par vous-même ?

Essayez ScaleGrid et configurez MySQL sur DigitalOcean en quelques étapes simples grâce à notre essai entièrement gratuit de 30 jours. Automatisez votre hébergement et votre gestion MySQL dans le cloud avec les fonctionnalités de gestion de base de données les plus puissantes pour optimiser votre déploiement.

Exécuter votre serveur MySQL sur DigitalOcean

Une fois que vous êtes opérationnel, votre déploiement MySQL peut fonctionner virtuellement sur pilote automatique. Étant donné que ScaleGrid est un service entièrement géré, nous gérons l'ensemble de l'administration et de la maintenance quotidiennes de vos bases de données MySQL, afin que vous puissiez vous concentrer sur la création de votre application. En cas de problème nécessitant votre attention, comme un manque d'espace disque, nous vous enverrons une notification afin que vous puissiez vous connecter et voir si vous êtes prêt à faire évoluer votre cluster.

Vous pouvez également contacter nos experts MySQL à tout moment grâce à notre assistance 24h/24 et 7j/7 pour vous aider à configurer et à dépanner votre déploiement.