Tutoriel MySQL en Go [partie 1: installation]
Photo par Tobias Fischer sur Unsplash
On trouve assez facilement sur Internet des informations sur comment accéder à des bases de données de type SQL avec le langage de programmation Go. J’en ai pleinement profité, et j’ai été confronté à quelques difficultés que j’ai réussi à contourner avec parfois un peu de temps et de sueur. Il me semblait important de partager mon expérience à ce sujet.
Ce petit tutoriel vous accompagne sur la mise en place d’un serveur MySQL/MariaDB et sa programmation simple en Go. L’idée c’est de présenter ici le minimum pour avoir une application fonctionnelle. Il s’inscrit dans une petite série d’articles que je voulais faire sur les bases de données.
Sommaire
- Installer votre serveur MySQL, cliquez ici.
- Ouvrir une connexion vers votre serveur MySQL, prochainement
- Transfert de données MySQL avec Go, prochainement
- Transactions dans MySQL avec Go, prochainement
Présentation
SQL signifie Structured Query Language. C’est un langage de programmation qui permet le traitement de bases de données de type relationnelles. Je ne vais pas détailler comment ce langage fonctionne ici. Il existe plusieurs articles sur Internet qui le feront bien mieux que moi. J’ai choisi d’utiliser MySQL ou MariaDB (un fork de MySQL). Peut-être en ferai-je un autre avec SQLite voire PostreSQL plus tard. Ceci dit, le package “database/sql” permet de fonctionner avec ces serveurs aussi. Pour en savoir plus vous pouvez trouver les drivers SQL ici.
Go est lui aussi un langage de programmation. Il est développé par Google et est de plus en plus utilisé. C’est un langage simple inspiré de C : d’ailleurs l’un de ses concepteurs est Ken Thompson. Pour ma part, je l’ai découvert parce que plusieurs de ses concepteurs/contributeurs ont travaillé sur Plan9.
Installation de MySQL
Sur Linux Ubuntu, comme sur Debian, installer un serveur MySQL se fait (entre autres) avec le gestionnaire apt :
xigh@dev:~$ sudo apt install mysql-server Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: libevent-core-2.1-6 mysql-client-5.7 mysql-client-core-5.7 mysql-server-5.7 mysql-server-core-5.7 ... Upgrade process completed successfully. Checking if update is needed. Setting up mysql-server (5.7.26-0ubuntu0.18.10.1) ...
Ensuite, il faut configurer et sécuriser votre serveur (ne serait-ce que les mots de passe). On fait ça avec la commande mysql_secure_installation, dont je vous invite à lire la documentation :
xigh@dev:~$ mysql_secure_installation
Ensuite on vérifie que l’accès fonctionne bien :
xigh@dev:~$ mysql -u root -p Enter password:
Et là, pour certains, c’est le drame car la connexion est refusée :
Access denied for user 'root'@'localhost'
Pourtant, le mot de passe est bien saisi. J’ai trouvé une solution ici. Pour ma part, voici une façon alternative de procéder. Connectez-vous au serveur via la commande sudo :
xigh@dev:~$ sudo mysql -u root -p
Maintenant, tapez les commandes SQL suivantes :
USE mysql; UPDATE user SET authentication_string=PASSWORD("admin") WHERE User='root'; UPDATE user SET plugin="mysql_native_password";
Bien évidemment, remplacez admin par le mot de passe de votre choix. Je ne saurais trop recommander l’utilisation d’un générateur de mots de passe aléatoire.
Et si on passait à la connexion à cette base de données avec Go ?
Tutoriel MySQL en Go
- Tutoriel MySQL en Go [partie 1: installation]
- Tutoriel MySQL en Go [partie 2: connexion et configuration]
- Tutoriel MySQL en Go [partie 3: transfert de données]
- Tutoriel MySQL en Go [partie 4: transactions]