Zezwalaj użytkownikowi root na mysql root root bez hasła


28

Na cPanel, gdy jestem zalogowany jako root i wpisuję „mysql” bez nazwy hosta i hasła, daje mi bezpośredni dostęp do użytkownika root mysql.

Chciałbym to zrobić dla jednego z moich serwerów innych niż cpanel, na których użytkownik root root linux otrzymuje logowanie bez hasła do użytkownika root mysql w taki sam sposób, jak robi to na cPanel.

Czy to możliwe ?

Odpowiedzi:


53

Najprostszym sposobem na to jest skorzystanie z sekcji klienta pliku ~ / .my.cnf i dodanie tam poświadczeń.

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

dobrym pomysłem jest uczynienie tego pliku czytelnym tylko przez root.


1
Tak, to działa i tak robi to cPanel
1066991

9
Muszę wskazać na potencjalny problem z bezpieczeństwem. Trzeba być ostrożnym, aby nie edytować tego, za pomocą /etc/my.cnfktórego serwer mysql używa do rozruchu. Jeśli umieścisz użytkownika root mysql w /etc/my.cnfDOWOLNYM, możesz użyć serwera mysql z WSZYSTKIMI uprawnieniami do KAŻDEJ bazy danych bez hasła. Iain wskazuje na użytkownika powłoki .my.cnfw domu roota, co oczywiście jest poprawne.
Koen van der Rijt,

Co jeśli nie ma pliku ~ / .my.cnf? Jeśli go utworzę i zrestartuję mysqld, czy powinienem to zrobić?
Amalgovinus,

21

W przypadku mysql 5.7+, jeśli ustawisz puste hasło dla początkowej konfiguracji, mysql automatycznie użyje auth_socketjako strategii. Próba aktualizacji hasła bez zmiany strategii nie przyniesie rezultatu. Zawsze możesz zalogować się bez użycia hasła, jeśli jest to użytkownik root.

Rozwiązanie Uruchom następujące polecenie, aby zmienić strategię uwierzytelniania i ustawić hasło

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

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


3
Musiałem dodać pusty ciąg na końcu, aby działał:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
kramer65

Intersting @kramer, działa tylko wtedy, gdy ustawię go jako ciebie ... BY "";. Dzięki!
Juan Antonio

Zmienia hasło na „ANY_PASSWORD” i nie usuwa hasła. Aby wyczyścić i zalogować się bez hasła, ustaw go na pusty ciąg.
Fernando Kosh

7

Począwszy od MySQL 5.6.6, możesz użyć mysql_config_editor, aby utworzyć zaszyfrowany plik, który automatycznie Cię zaloguje:

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

Następnie wprowadź hasło po wyświetleniu monitu.

Uwaga: jeśli twoje hasło zawiera „#” i możliwe, że inne znaki, użyj pojedynczych cudzysłowów podczas wprowadzania hasła.


Czy możesz rozwinąć komentarz dotyczący pojedynczego cytatu?
Monituje o podanie

Tak, stwierdziłem, że wpisanie go bez cudzysłowów nie zadziała, jeśli ma znaki specjalne. Po wyświetleniu monitu wpisz „(pojedynczy cudzysłów), następnie hasło, a następnie”.
Brian Deterling,

0

Utwórz plik zawierający tylko hasło root mysql i tylko root może czytać.

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

Możesz zaimportować bazę danych

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

lub połącz się z bazą danych i wydaj polecenia 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
To dużo więcej pracy niż inna odpowiedź. Twoje hasło jest za krótkie. :)
Michael Hampton

8
Nie rób tego. Umieszcza hasło w wierszu poleceń, które każdy może odczytać za pomocą ps(1)
camh

To naprawdę nie jest dobry pomysł
Fernando Kosh
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.