Installer et configurer MYSQL sous docker pour en finir avec Vagrant (sur MacOS)

Pré-requis :

  • Docker : https://hub.docker.com
  • Kitematic (GUI pour Docker) : https://github.com/docker/kitematic/releases

Une fois installé, lancez l’application Docker et connectez vous avec votre compte.

Ensuite, via Kitematic, téléchargez l’image « officielle » mysql qui vous intéresse (en général la ‘:latest’)

Kitematic va lui même créer un container Docker en se basant sur l’image précédemment téléchargée.

Startez le container via Kitematic et allez dans ‘Settings’. Ajouter une ligne aux Environment Variables ‘MYSQL_ROOT_PASSWORD’, et enregistrez.

Vos variables devraient ressembler à ça :

Si vous le désirez, vous pouvez changer et configurer les ports de sorties dans ‘Hostname/Ports’.

Redémarrer le container, et vous avez un service mysql qui tourne 🙂

Tips: Si vous n’arrivez pas à connecter vos projets (Ruby On Rails pour notre cas) avec ce nouvel environnement à cause de cette erreur :

« Authentication plugin ‘caching_sha2_password’ cannot be loaded »

C’est qu’il y a un problème d’encryptage du mot de passe ‘root’ (certainement dû à une divergence de mysql-server/client).

Pour se faire, deux solutions :

  • Via Kitematic, cliquez sur ‘Exec’
  • Via un terminal, lancez les commandes suivantes

Puis, dans la console ouverte, mettez à jour le mot de passe ‘root’ via :

Configurer MySQL 5.5 en UTF8

Par défaut MySQL utilise l’encodage Latin1 et la collation latin1_swedish_ci. Pour qu’il utilise l’encodage utf-8 et la collation utf8_unicode_ci, il faut créer un fichier utf8.cnf dans le répertoire /etc/mysql/conf.d/ et y insérer les lignes suivantes :

Les prochaines bases de données créées avec ruby on rails (par exemple) seront ainsi encodées par défaut en utf-8.

Source : http://stackoverflow.com/questions/13900983/mysql-5-5-utf8-trouble

Linux : configurer MySQL en UTF8

/!\ La méthode citée ci-dessous ne fonctionne pas sous MySQL 5.5. Pour cette version et les suivantes, référez-vous à l’article Configurer MySQL 5.5 en UTF8. /!\

Pour que vos bases de données MySQL soit encodées en UTF8 par défaut, il faut ajouter les directives suivantes dans le fichier /etc/mysql/my.cnf :

Pour automatiser cela, on peut utiliser les commandes sed suivantes :

À noter que la fonction sed sous Mac OSX ne gère pas le caractère \n.

Source :
http://www.alsacreations.com/tuto/lire/615-installation-configuration-MySQL.html

http://stackoverflow.com/questions/3513773/change-mysql-default-character-set-to-utf-8-in-my-cnf

On peut également créé un fichier dédié à ces configurations dans le répertoire /etc/mysql/conf.d/.

Source : http://www.guim.info/dokuwiki/debian/mysql_php_utf8

Mysql2::Error: Incorrect string value

En Ruby on Rails, lorsque vous importez des données dans une base de données MySQL, via un fichier CSV par exemple, il peut arriver que vous rencontriez l’erreur Mysql2::Error: Incorrect string value. Cela peut être dû au fait que votre fichier CSV est encodé en UTF-8 alors que l’interclassement de la base de données est en Latin par défaut.

Pour changer l’interclassement d’une table de la base de données, ou directement d’un champ, il faut saisir  les requêtes :