2015-01-21 20 views
27

Dziś zrobiłem logowanie jako root do Ubuntu 14.04.1 LTS llAccess denied for user 'root' @ 'localhost' (using password: YES) po nowej instalacji na Ubuntu

a następnie apt-get install mariadb-server (bez sudo ale jako root).

Z mySQL -h localhost -u root --password=<PW> mam

Odmowa dostępu dla użytkownika 'root' @ 'localhost' (using password: YES)

Z mySQL -u root -p ja zalogowany do DB i zrobił

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '<PW>'; 
FLUSH ALL PRIVILEGES; 

Ale to nie pomogło. Masz jakiś pomysł? Nie znalazłem odpowiedzi na podobne pytania.

+0

Czy próbowałeś resetu hasła dla root? –

Odpowiedz

82

Po zakończeniu tej samej aktualizacji, na Ubuntu, miałem ten sam problem.

Co było dziwne było to, że

sudo /usr/bin/mysql_secure_installation 

zaakceptuje moje hasło i pozwala mi go ustawić, ale nie mogę zalogować się jako root przez klienta mysql

musiałem zacząć MariaDB z użytkownikiem

sudo mysqld_safe --skip-grant-tables 

uzyskanie dostępu jako root, podczas gdy wszyscy inni użytkownicy mogą nadal uzyskiwać dostęp do konta.

Patrząc na mysql.user stole zauważyłem root kolumna plugin jest ustawiony na unix_socket natomiast wszystkich innych użytkowników jest ustawiony na „mysql_native_password”. Krótkie spojrzenie na tę stronę: https://mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin/ wyjaśnia, że ​​gniazdo Unix umożliwia logowanie się przez dopasowanie procesu uid procesu działającego na kliencie z procesem użytkownika w tabeli mysql.user. Innymi słowy, aby uzyskać dostęp do mariadb jako root, musisz być zalogowany jako root.

Rzeczywiście ponownym mój MariaDB demona z uwierzytelniania wymaganego mogę się zalogować jako root z

sudo mysql -u root -p 

lub

sudo su - 
mysql -u root -p 

Uczyniwszy to myślałem o tym, jak uzyskać dostęp bez konieczności wykonywania sudo, co jest tylko kwestią uruchomienia tych zapytań mysql:

GRANT ALL PRIVILEGES on *.* to 'root'@'localhost' IDENTIFIED BY '<password>'; 
GRANT ALL PRIVILEGES on *.* to 'root'@'localhost' IDENTIFIED BY '<password>'; 
FLUSH PRIVILEGES; 

lub

UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket'; 
FLUSH PRIVILEGES; 

Następnie ponownym MariaDB:

sudo service mysql stop 
sudo service mysql start 

i voila miałem dostęp od nasady mojego konta osobistego vi mysql -u -p

UWAGA ten sposób zmniejsza SECURITY Przypuszczalnie Deweloperzy MariaDB zdecydowali się na taki dostęp z uprawnieniami roota bez ważnego powodu.

Myśląc o tym, cieszę się, że muszę sudo mysql -u root -p, więc wracam do tego, ale pomyślałem, że opublikuję moje rozwiązanie, ponieważ nie mogłem znaleźć gdzie indziej.

+3

Niesamowita odpowiedź, dziękuję <3 –

+3

Doskonała odpowiedź dla środowisk programistycznych. Dzięki @DorianFM! – digitalformula

24

W Ubuntu 16.04 LTS czystych, MariaDB korzeń logowania dla localhost zmieniła styl z hasłem do logowania sudo stylu ...

tak, po prostu zrób

sudo mysql -u root 

ponieważ chcemy, aby się zalogować z hasłem, utwórz kolejnego użytkownika 'użytkownika'

w konsoli MariaDB ... (pojawi się w konsoli MariaDB z "sudo mysql -u root")

use mysql 
CREATE USER 'user'@'localhost' IDENTIFIED BY 'yourpassword'; 
\q 

następnie w wierszu powłoki bash,

mysql-workbench 

i można się zalogować z 'user' z 'Yourpassword' na localhost

-1

Wystarczy używać sudo aby to działa

sudo mysql_secure_installation 
1

Musiałem być zalogowany do systemu Ubuntu jako root, aby uzyskać dostęp do Mariadb jako root. Może to mieć coś wspólnego z tym "Hardenem", który podpowiada ci, kiedy musisz zainstalować. Tak:.

$ sudo su 
[sudo] password for user: yourubunturootpassword 
# mysql -r root -p 
Enter password: yourmariadbrootpassword 

i jesteś w

1

nowe polecenie, aby wypłukać z przywilejów jest:

FLUSH PRIVILEGES

Stara Komenda FLUSH ALL PRIVILEGES nie działa dłużej.

Dostaniesz błąd, który wygląda tak:

MariaDB [(none)]> FLUSH ALL PRIVILEGES; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ALL PRIVILEGES' at line 1

Hope this helps :)

0

Spróbuj polecenia

sudo mysql_secure_installation 

naciśnij enter i przypisać nowe hasło root w mysql/mariadb.

Jeśli pojawi się błąd jak

ERROR 2002 (HY000): Nie można połączyć się z lokalnego serwera MySQL poprzez gniazdo '/var/run/mysqld/mysqld.sock'

włączyć usługę z

service mysql start 

teraz jeśli ponownie wprowadzić z

mysql -u root -p 

jeśli się problem wejść z sudo su i mysql -u root -p teraz stosować uprawnienia do korzenia

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '<password>';

to naprawić mój problem w MariaDB.

Powodzenia

Powiązane problemy