Autoriser l'utilisateur root Linux mysql root sans mot de passe


28

Sur cPanel lorsque je suis connecté en tant que root et que je tape "mysql" sans nom d'hôte et mot de passe, cela me donne un accès direct à l'utilisateur root mysql.

Je voudrais le faire pour l'un de mes serveurs non cpanel où l'utilisateur root linux obtient une connexion sans mot de passe à l'utilisateur root mysql de la même manière que sur cPanel.

Est-ce possible ?

Réponses:


53

La méthode la plus simple consiste à utiliser une section client du fichier ~ / .my.cnf et à y ajouter les informations d'identification.

[client]
user=root
password=somepassword
...

c'est une bonne idée de rendre ce fichier lisible uniquement par root aussi.


1
Oui, cela fonctionne et c'est ainsi que le fait cPanel
user1066991

9
J'ai besoin de pointer vers un problème de sécurité potentiel .. Vous devez faire un peu attention à ne pas le modifier dans /etc/my.cnflequel le serveur mysql utilise pour démarrer. Si vous mettez l'utilisateur root mysql dans /etc/my.cnfN'IMPORTE QUI, vous pouvez utiliser le serveur mysql avec TOUS les privilèges sur CHAQUE base de données sans mot de passe. Iain pointe vers l'utilisateur du shell .my.cnfdans la maison de la racine, ce qui est bien sûr correct.
Koen van der Rijt

Que faire s'il n'y a pas de fichier ~ / .my.cnf? Si je le crée et redémarre mysqld, suis-je alors censé pouvoir le faire?
Amalgovinus

21

Pour mysql 5.7+, si vous définissez un mot de passe vide pour la configuration initiale, mysql sera automatiquement utilisé auth_socketcomme stratégie. Une tentative de mise à jour du mot de passe sans modifier la stratégie n'aura aucun résultat. Vous pouvez toujours vous connecter sans utiliser de mot de passe si votre utilisateur l'est root.

Solution Exécutez la commande suivante pour modifier la stratégie d'authentification et définir le mot de passe

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY ''

référence: https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/


3
J'ai dû ajouter une chaîne vide à la fin pour le faire fonctionner:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
kramer65

Intersting @kramer, ne fonctionne que si je le définit comme vous ... BY "";. Merci!
Juan Antonio

Il change le mot de passe en 'ANY_PASSWORD' et n'efface pas le mot de passe. Pour effacer et vous connecter sans mot de passe, définissez-le sur une chaîne vide.
Fernando Kosh

7

Depuis MySQL 5.6.6, vous pouvez utiliser mysql_config_editor pour créer un fichier crypté qui vous connectera automatiquement:

mysql_config_editor set --login-path=client --host=localhost --user=root --password

Saisissez ensuite le mot de passe lorsque vous y êtes invité.

Remarque: si votre mot de passe contient '#' et éventuellement d'autres caractères, utilisez des guillemets simples lors de la saisie du mot de passe.


Pouvez-vous développer le commentaire à guillemet simple? Il vous invite
user2299958

Oui, j'ai trouvé que la saisie sans guillemets ne fonctionnait pas si elle avait des caractères spéciaux. Donc, lorsque vous y êtes invité, entrez simplement '(guillemet simple), puis le mot de passe, puis'.
Brian Deterling

0

Faire un fichier contenant uniquement le mot de passe root mysql et seul root peut lire.

# ls -l /root/.mysqlpw 
-rw------- 1 root root 7 2013-08-19 13:24 /root/.mysqlpw

Vous pouvez importer une base de données avec

# mysql -u root -p`cat /root/.mysqlpw ` yourdatabase < databasedump.sql

ou connectez-vous à votre base de données et lancez des commandes mysql

# mysql -u root -p`cat /root/.mysqlpw ` yourdatabase
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 20460
Server version: 5.1.63-0ubuntu0.10.04.1 (Ubuntu)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| yourdatabase       |
+--------------------+
3 rows in set (0.00 sec)

mysql> show tables;
...

5
C'est beaucoup plus de travail que l'autre réponse. Et votre mot de passe est trop court. :)
Michael Hampton

8
Ne faites pas cela. Il met le mot de passe sur la ligne de commande que n'importe qui peut lire avec ps(1)
camh

Ce n'est vraiment pas une bonne idée
Fernando Kosh
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.