Nieuwe installaties van mySQL (suo apt-get install mysql-server
) regelen de authenticatie op een andere manier dan voorheen: er wordt niet meer tijdens de installatie gevraagd naar een 'database administrator user'. In plaats daarvan wordt gebruik gemaakt van 'local unix authorization'. Het effect is, dat je oeverloos op zoek kunt naar de oorzaak van de foutmelding mysql - ERROR 1698 (28000): Access denied for user 'root'@'localhost'
, en via omwegen zonder enig effect het wachtwoord van de root
user kunt wijzigen, of de installatie helemaal opnieuw doen en tot de conclusie komen dat er nog stééds niet om een wachtwoord wordt gevraagd. De oplossing is simpel, echter: wijzig het account van de root gebruiker zodat deze van een los wachtwoord gebruikt maakt, en voeg de normale pi user toe aan de mySQL installatie:
$ sudo mysql -u root mysql> USE mysql; mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root'; mysql> FLUSH PRIVILEGES; mysql> exit; $ service mysql restart
en toevoegen pi user aan toegangsrechten:
$ sudo mysql -u root mysql> USE mysql; mysql> CREATE USER 'pi'@'localhost' IDENTIFIED BY ''; mysql> GRANT ALL PRIVILEGES ON * . * TO 'pi'@'localhost'; mysql> UPDATE user SET plugin='auth_socket' WHERE User='pi'; mysql> FLUSH PRIVILEGES; mysql> exit; $ service mysql restart
Ik heb een heel toegankelijk boek geschreven over het zelf ontwikkelen van internet of things toepassingen. Je kunt dit boek kopen bij Bol.com en bij elektronicawinkel Okaphone. Het boek is voorzien van een website waarop uitbreidingen, wijzigingen en aanpassingen worden gepubliceerd. Ook codevoorbeelden en extra projecten zijn hier beschikbaar.