web-dev-qa-db-fra.com

Accès root rooté à Homebrew Mariadb Mysql refusé

Donc, j'installe essentiellement mariadb avec mysql sur mon mac en utilisant homebrew. Ce sont les étapes que j'ai faites:

  • brew doctor -> a travaillé
  • mise à jour de brassage -> travaillé
  • brew install mariadb -> a travaillé
  • mysql_install_db -> Échec

    AVERTISSEMENT: l'hôte "Toms-MacBook-Pro.local" n'a pas pu être recherché avec /usr/local/Cellar/mariadb/10.4.6_1/bin/resolveip. Cela signifie probablement que vos bibliothèques libc ne sont pas 100% compatibles avec cette version binaire MariaDB. Le démon MariaDB, mysqld, devrait fonctionner normalement à l'exception que la résolution du nom d'hôte ne fonctionnera pas. Cela signifie que vous devez utiliser des adresses IP au lieu de noms d'hôtes lors de la spécification des privilèges MariaDB! La table mysql.user existe déjà!

Fonctionnement mysql_upgrade m'a ensuite donné l'erreur suivante:

La vérification de la version a échoué. Vous obtenez l'erreur suivante lors de l'appel du client de ligne de commande 'mysql' ERREUR 1698 (28000): Accès refusé pour l'utilisateur 'root' @ 'localhost' ERREUR FATALE: La mise à niveau a échoué

Je ne peux pas entrer dans mysql comme ceci:

mysql -uroot
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

mais comme ça:

Sudo mysql -u root

La table utilisateur renvoie ceci:

MariaDB [(none)]> USE mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]> SELECT User, Host, plugin FROM mysql.user;
+---------------+-------------------------+-----------------------+
| User          | Host                    | plugin                |
+---------------+-------------------------+-----------------------+
| root          | localhost               | mysql_native_password |
| toms          | localhost               | mysql_native_password |
|               | localhost               |                       |
|               | toms-macbook-pro.local |                       |
+---------------+-------------------------+-----------------------+
4 rows in set (0.004 sec)
3
junfo

J'utilise ceci mysql_secure_installation et cela fonctionne maintenant pour moi:

$ mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): << enter root here >>

J'entre root comme mot de passe actuel

OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

et fais le reste

0
Agus Sudarmanto

MariaDB 10.4 active le plugin d'authentification socket Unix pour la racine locale par défaut. Cela signifie que sur un système fraîchement installé, vous pouvez vous connecter à un serveur en cours d'exécution sans mot de passe, tant que vous êtes une racine locale (par exemple, exécutez sous Sudo) et en utilisant un socket plutôt que TCP.

De plus, MariaDB 10.4 autorise plusieurs méthodes d'authentification pour les comptes. Il configure la racine locale pour pouvoir également utiliser l'authentification par mot de passe, mais elle invalide initialement le mot de passe (ne définit pas un mot de passe vide comme auparavant). Si vous souhaitez utiliser l'authentification par mot de passe et vous connecter en tant que mysql -uroot -p, vous devez d'abord vous connecter en tant que root à l'aide du socket Unix et exécuter SET PASSWORD=....

La configuration utilisateur avancée est désormais stockée dans mysql.global_priv table au format JSON. mysql.user a été conservé pour des raisons de compatibilité descendante, mais il a cessé d'être une table et est devenu une vue. En raison de l'autorisation de plusieurs méthodes d'authentification, il n'affiche pas toujours la configuration utilisateur avec précision. Plus précisément, il n'affiche pas toutes les méthodes d'authentification disponibles pour un utilisateur, vous devez interroger mysql.global_priv pour ça. Sur une nouvelle installation, vous verrez quelque chose comme

+-----------+--------+--------------------------------------------------------------------------------------------------------------------------------------------+
| Host      | User   | Priv                                                                                                                                       |
+-----------+--------+--------------------------------------------------------------------------------------------------------------------------------------------+
| localhost | root   | {"access":18446744073709551615,"plugin":"mysql_native_password","authentication_string":"invalid","auth_or":[{},{"plugin":"unix_socket"}]} |
...

Vous pouvez trouver plus d'informations sur les modifications de l'authentification 10.4 ici .

0
elenst