MySQL est un système de gestion de base de données populaire utilisé pour les applications Web et serveur. Cependant, MySQL n'est plus dans les référentiels de CentOS et MariaDB est devenu le système de base de données par défaut proposé. MariaDB est considéré comme un remplacement de MySQL et serait suffisant si vous avez juste besoin d'un système de base de données en général. Consultez notre guide MariaDB dans CentOS 7 pour les instructions d'installation.
Si vous préférez néanmoins MySQL, ce guide vous expliquera comment l'installer, le configurer et le gérer sur un Linode exécutant CentOS 7.
Les grandes bases de données MySQL peuvent nécessiter une quantité considérable de mémoire. Pour cette raison, nous vous recommandons d'utiliser un High Memory Linode pour de telles configurations.
Remarque Ce guide est écrit pour un utilisateur non root. Les commandes qui nécessitent des privilèges élevés sont préfixées parsudo
. Si vous n'êtes pas familier avec lesudo
commande, vous pouvez consulter notreGuide des utilisateurs et des groupes.
Avant de commencer
-
Assurez-vous d'avoir suivi les guides de démarrage et de sécurisation de votre serveur, et que le nom d'hôte de Linode est défini.
Pour vérifier votre nom d'hôte, exécutez :
hostname hostname -f
La première commande doit afficher votre nom d'hôte court et la seconde doit afficher votre nom de domaine complet (FQDN).
-
Mettez à jour votre système :
sudo yum update
-
Vous aurez besoin de
wget
pour compléter ce guide. Il peut être installé comme suit :yum install wget
Installer MySQL
MySQL doit être installé à partir du référentiel communautaire.
-
Téléchargez et ajoutez le dépôt, puis mettez-le à jour.
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm yum update
-
Installez MySQL comme d'habitude et démarrez le service. Lors de l'installation, il vous sera demandé si vous souhaitez accepter les résultats de la vérification GPG du fichier .rpm. Si aucune erreur ou non-concordance ne se produit, saisissez
y
.sudo yum install mysql-server sudo systemctl start mysqld
MySQL se liera à localhost (127.0.0.1) par défaut. Veuillez consulter notre guide d'accès à distance MySQL pour plus d'informations sur la connexion à vos bases de données à l'aide de SSH.
Remarque Autoriser un accès illimité à MySQL sur une adresse IP publique n'est pas conseillé mais vous pouvez changer l'adresse sur laquelle il écoute en modifiant lebind-address
paramètre dans/etc/my.cnf
. Si vous décidez de lier MySQL à votre adresse IP publique, vous devez implémenter des règles de pare-feu qui autorisent uniquement les connexions à partir d'adresses IP spécifiques.
Renforcer le serveur MySQL
-
Exécutez le
mysql_secure_installation
script pour résoudre plusieurs problèmes de sécurité dans une installation MySQL par défaut.sudo mysql_secure_installation
Vous aurez le choix de modifier le mot de passe root MySQL, de supprimer les comptes d'utilisateurs anonymes, de désactiver les connexions root en dehors de localhost et de supprimer les bases de données de test. Il est recommandé de répondre yes
à ces options. Vous pouvez en savoir plus sur le script dans le manuel de référence MySQL.
RemarqueSi MySQL 5.7 a été installé, vous aurez besoin du mot de passe temporaire créé lors de l'installation. Ce mot de passe est noté dans le
/var/log/mysql.log
fichier, et peut être trouvé rapidement à l'aide de la commande suivante.sudo grep 'temporary password' /var/log/mysqld.log
Utiliser MySQL
L'outil standard pour interagir avec MySQL est le mysql
client qui s'installe avec le mysql-server
emballer. Le client MySQL est utilisé via un terminal.
Connexion racine
-
Pour vous connecter à MySQL en tant qu'utilisateur root :
mysql -u root -p
-
Lorsque vous y êtes invité, entrez le mot de passe root que vous avez attribué lors de l'exécution du script mysql_secure_installation.
Vous serez alors présenté avec un en-tête de bienvenue et l'invite MySQL comme indiqué ci-dessous :
mysql>
-
Pour générer une liste de commandes pour l'invite MySQL, entrez
\h
. Vous verrez alors :List of all MySQL commands: Note that all text commands must be first on line and end with ';' ? (\?) Synonym for `help'. clear (\c) Clear command. connect (\r) Reconnect to the server. Optional arguments are db and host. delimiter (\d) Set statement delimiter. NOTE: Takes the rest of the line as new delimiter. edit (\e) Edit command with $EDITOR. ego (\G) Send command to mysql server, display result vertically. exit (\q) Exit mysql. Same as quit. go (\g) Send command to mysql server. help (\h) Display this help. nopager (\n) Disable pager, print to stdout. notee (\t) Don't write into outfile. pager (\P) Set PAGER [to_pager]. Print the query results via PAGER. print (\p) Print current command. prompt (\R) Change your mysql prompt. quit (\q) Quit mysql. rehash (\#) Rebuild completion hash. source (\.) Execute an SQL script file. Takes a file name as an argument. status (\s) Get status information from the server. system (\!) Execute a system shell command. tee (\T) Set outfile [to_outfile]. Append everything into given outfile. use (\u) Use another database. Takes database name as argument. charset (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets. warnings (\W) Show warnings after every statement. nowarning (\w) Don't show warnings after every statement. For server side help, type 'help contents' mysql>
Créer un nouvel utilisateur et une nouvelle base de données MySQL
-
Dans l'exemple ci-dessous,
testdb
est le nom de la base de données,testuser
est l'utilisateur, etpassword
est le mot de passe de l'utilisateur.create database testdb; create user 'testuser'@'localhost' identified by 'password'; grant all on testdb.* to 'testuser' identified by 'password';
Vous pouvez raccourcir ce processus en créant l'utilisateur while attribution des autorisations de base de données :
create database testdb; grant all on testdb.* to 'testuser' identified by 'password';
-
Puis quittez MySQL.
exit
Créer un exemple de tableau
-
Reconnectez-vous en tant que
testuser
.mysql -u testuser -p
-
Créez un exemple de table appelée clients . Cela crée une table avec un champ ID client de type INT pour entier (auto-incrémenté pour les nouveaux enregistrements, utilisé comme clé primaire), ainsi que deux champs pour stocker le nom du client.
use testdb; create table customers (customer_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, first_name TEXT, last_name TEXT);
-
Puis quittez MySQL.
exit
Réinitialiser le mot de passe racine MySQL
Si vous oubliez votre mot de passe root MySQL, il peut être réinitialisé.
-
Arrêtez l'instance actuelle du serveur MySQL, puis redémarrez-la avec une option pour ne pas demander de mot de passe.
sudo systemctl stop mysqld sudo mysqld_safe --skip-grant-tables &
-
Reconnectez-vous au serveur MySQL avec le compte root MySQL.
mysql -u root
-
Utilisez les commandes suivantes pour réinitialiser le mot de passe root. Remplacer
password
avec un mot de passe fort.use mysql; update user SET PASSWORD=PASSWORD("password") WHERE USER='root'; flush privileges; exit
-
Puis redémarrez MySQL.
sudo systemctl start mysqld
Régler MySQL
MySQL Tuner est un script Perl qui se connecte à une instance en cours d'exécution de MySQL et fournit des recommandations de configuration basées sur la charge de travail. Idéalement, l'instance MySQL devrait avoir fonctionné pendant au moins 24 heures avant d'exécuter le tuner. Plus l'instance a fonctionné longtemps, meilleurs seront les conseils donnés par MySQL Tuner.
-
Téléchargez MySQL Tuner dans votre répertoire personnel.
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
-
Pour l'exécuter :
perl ./mysqltuner.pl
Le nom et le mot de passe de l'utilisateur racine MySQL vous seront demandés. La sortie affichera deux domaines d'intérêt :les recommandations générales et les variables à ajuster.
MySQL Tuner est un excellent point de départ pour optimiser un serveur MySQL, mais il serait prudent d'effectuer des recherches supplémentaires pour des configurations adaptées aux applications utilisant MySQL sur votre Linode.
Vous avez encore quelques questions ?Rejoignez notre communauté et posez vos questions aux autres passionnés de Linode et Linux pour vous aider.
Questions connexes :
- Comment installer phpMyAdmin sur Centos7
- Comment puis-je configurer une pile LAMP/LEMP sur mon Linode ?
- Comment exécuter à la fois MySQL et MongoDB ?
Plus d'informations
Vous pouvez consulter les ressources suivantes pour plus d'informations sur ce sujet. Bien que ceux-ci soient fournis dans l'espoir qu'ils seront utiles, veuillez noter que nous ne pouvons pas garantir l'exactitude ou l'actualité des documents hébergés en externe.
- Manuel de référence de MySQL 5.6
- Manuel PHP MySQL
- Exemples Perl DBI pour DBD::mysql
- Guide de l'utilisateur de MySQLdb
- Tutoriel MySQL Tuner