Comment utiliser MySQL avec une application Ruby on Rails
Ruby on Rails utilise SQLite3 comme base de données par défaut. Bien que SQLite fonctionne très bien avec Rails, il se peut parfois qu'il ne soit pas suffisant pour votre application Rails. Si vous souhaitez la scalabilité, la concurrence, la centralisation et le contrôle, vous pouvez essayer des bases de données plus robustes comme MySQL ou PostgreSQL. Dans ce guide, nous verrons comment utiliser MySQL avec une application Ruby on Rails sur Ubuntu Linux.
1. Installer MySQL sur Ubuntu
MySQL est disponible dans les dépôts par défaut de la plupart des distributions Linux et similaires à Unix.
Pour installer MySQL sur Debian, Ubuntu et ses dérivés, exécutez :
$ sudo apt install mysql-server mysql-client libmysqlclient-devLe paquet libmysqlclient-dev fournit les fichiers nécessaires pour compiler la gem mysql2. Ruby on Rails utilise la gem mysql2 pour se connecter à MySQL lorsque vous configurez une application Rails.
1.1. Configurer le mot de passe root de MySQL
Ensuite, configurez le mot de passe de l'utilisateur root MySQL en exécutant la commande suivante :
$ sudo mysql_secure_installationEntrez "y" pour configurer le composant VALIDATE PASSWORD :
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: yChoisissez le niveau de validation du mot de passe. Les validations de mot de passe disponibles sont faible, moyenne et forte. Ici, je choisis la validation du mot de passe de niveau faible en entrant zéro (0).
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0Ensuite, saisissez le mot de passe root MySQL deux fois. Le mot de passe doit être fort et contenir au moins 8 caractères. Appuyez sur Y pour continuer :
Please set the password for root here.
New password:
Re-enter new password:
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : yEnsuite, on vous posera une série de questions. Tapez y et appuyez sur ENTRÉE pour chaque question. Cela supprimera l'utilisateur anonyme, interdira la connexion root à distance et supprimera la base de données de test.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : 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? (Press y|Y for Yes, any other key for No) : y
Success.
By default, MySQL 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? (Press y|Y for Yes, any other key for No) : 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? (Press y|Y for Yes, any other key for No) : y
Success.
All done!Fait ! Nous avons défini le mot de passe de l'utilisateur root de MySQL.
1.2. Installer le pilote MySQL
Installez le pilote MySQL nommé mysql2 gem qui permet à l'application Rails de se connecter à la base de données MySQL.
$ gem install mysql2Tout est fait ! Les applications Rails peuvent maintenant se connecter au serveur de base de données MySQL.
Avançons et créons une nouvelle application Rails avec une base de données MySQL.
2. Utiliser MySQL avec une application Ruby on Rails
Pour créer une nouvelle application Rails appelée ostechnixapp et utiliser la base de données MySQL comme base de données par défaut, exécutez :
$ rails new ostechnixapp -d mysqlCela créera une application Rails appelée ostechnixapp dans un répertoire nommé ostechnixapp et installera les dépendances gem déjà mentionnées dans Gemfile en utilisant bundle install.
Après avoir créé l'application ostechnixapp, passez à son répertoire :
$ cd ostechnixapp/Modifiez le fichier de configuration de la base de données de l'application :
$ vi config/database.ymlSous la section par défaut, remplacez le mot de passe de l'utilisateur MySQL root par celui que vous avez créé précédemment :
[...]
default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password: Password123#@!
socket: /var/run/mysqld/mysqld.sock
[...]Enregistrez et fermez le fichier.
Créez maintenant la nouvelle base de données pour votre application Rails en utilisant la commande :
$ rake db:createCela créera deux bases de données avec le nom de votre application Rails. Par exemple, si le nom de l'application est ostechnixapp, alors cela créera ostechnixapp_development et ostechnixapp_test.
Vous pouvez également vérifier si les bases de données sont créées avec succès depuis MySQL.
Connectez-vous à MySQL en tant qu'utilisateur root :
$ mysql -u root -pVérifiez si les bases de données sont créées en entrant la commande suivante :
mysql> show databases;Exemple de sortie :
+--------------------------+
| Database |
+--------------------------+
| information_schema |
| mysql |
| ostechnixapp_development |
| ostechnixapp_test |
| performance_schema |
| sys |
+--------------------------+
6 rows in set (0.01 sec)
mysql> Quittez l'invite MySQL.
Démarrez maintenant votre serveur web Rails en utilisant la commande :
$ rails server -b 0.0.0.0Cela démarrera votre application Rails sur le port par défaut 3000. Ici, nous avons passé l'argument -b 0.0.0.0 afin d'accéder à l'application Rails depuis n'importe quelle machine du réseau local.
Vous pouvez accéder à votre page de test Rails sur votre navigateur web en naviguant vers l'URL : http://ip-address:3000
Si vous voulez utiliser un port différent, passez le paramètre -p avec le numéro de port comme ci-dessous :
$ rails server -b 0.0.0.0 -p 8080Maintenant, vous pouvez accéder à votre application Rails en utilisant cette URL : http://ip-address:8080
3. Supprimer l'application Rails
Si vous avez utilisé la base de données par défaut qui est SQLite, vous pouvez supprimer l'application Rails en supprimant simplement son répertoire app.
$ rm -fr ostechnixappSi vous avez utilisé MySQL, vous devez d'abord supprimer les bases de données liées à votre application en utilisant la commande :
$ rake db:dropEt ensuite supprimez le répertoire de l'application :
$ rm -fr ostechnixappConclusion
Dans ce tutoriel, nous avons discuté pourquoi nous devons utiliser des bases de données en modèle client/serveur pour notre application Rails et comment créer une application Rails avec une base de données MySQL. Nous avons également vu comment supprimer une application Rails.
Si plusieurs copies de l'application Rails s'exécutent en même temps, plusieurs applications et utilisateurs utilisant la même base de données, vous devriez vous éloigner de Sqlite et essayer des bases de données en modèle client/serveur comme MySQL. Si vous souhaitez un stockage local des données pour des applications individuelles, Sqlite est plus que suffisant.
Lecture connexe :
- Comment utiliser PostgreSQL avec une application Ruby on Rails
- Configurer la connexion à la base de données en utilisant une variable d'environnement dans Rails


