MySQL est un système de gestion de base de données populaire utilisé pour les applications Web et serveur. Ce guide vous présentera comment installer, configurer et gérer MySQL sur un Linode exécutant CentOS 6.
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
Installer et démarrer MySQL
-
Installez MySQL et indiquez-lui sur quels niveaux d'exécution démarrer :
sudo yum install mysql-server sudo /sbin/chkconfig --levels 235 mysqld on
-
Ensuite pour démarrer le serveur MySQL :
sudo service mysqld start
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 oui à ces options. Vous pouvez en savoir plus sur le script dans le manuel de référence MySQL.
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 racine :
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 l'affichage du moniteur MySQL :
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.0.45 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. 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
customers
. Cela crée une table avec un champ ID client de typeINT
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 vidé puis 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 /etc/init.d/mysqld stop 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 service mysqld restart
Vous pourrez maintenant vous reconnecter en utilisant mysql -u root -p
.
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
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.
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.1
- Manuel PHP MySQL
- Exemples Perl DBI pour DBD::mysql
- Guide de l'utilisateur de MySQLdb