2016-06-29 44 views
14

Mam Ubuntu 16.04 i Mysql 5.7.12-0ubuntu1.1. Po wpisaniu:MySQL działa z sudo, ale bez niego. (ubuntu 16.04, mysql 5.7.12-0ubuntu1.1)

sudo mysql -u root 

mogę się zalogować do konsoli mysql, ale gdy wpisuję go bez sudo:

mysql -u root 

mogę uzyskać błąd:

ERROR 1698 (28000): Access denied for user 'root'@'localhost' 

Mój problem wystąpił po zainstalowaniu i usunięto MariaDB. Pamiętam, że w PostgreSQL jest ważne, które logowanie użytkownika unix do bazy danych, ale jak sobie z tym poradzić w Mysql?


I rozwiązać ten problem brzmienie:

https://askubuntu.com/questions/766334/cant-login-as-mysql-user-root-from-normal-user-account-in-ubuntu-16-04

Odpowiedz

3

rozwiązaniem jest podanie hasła do konta root mysql (jeśli nie zrobiłeś tego wcześniej). Otrzymujesz komunikat o błędzie, ponieważ hasło jest wymagane, a Ty go nie dostarczyłeś. Zresetować hasło roota z:

$ mysqladmin -u root password 
$ New password: 

lub jeśli chcesz już ustawić hasło roota (w co wątpię, inaczej nie będzie mógł zalogować się poprzez sudo) to byłoby

$ mysqladmin -u root -p password 

Użytkownicy Mysql nie są powiązani z użytkownikami Uniksa, w przeciwieństwie do PostgreSQL.

+1

PO rozwiązanie stosowane i że pracował dla mnie też było: ALTER USER 'root' @ 'localhost' utożsamiany z mysql_native_password przez 'test'; Dla innych przechodzących tutaj. – thelogix

+0

Dzięki wtyczce 'auth_socket' użytkownicy mysql mogą być podłączeni do użytkowników Uniksa. – Loren

0

Spróbuj poniższego polecenia:

mysql -uroot -p[password] 

[hasło] - typ hasło zostały ustawione podczas instalacji MySQL.

Można też spróbować:

sudo mysql -uroot -p[password] 
5

Problem ten wydaje się być spowodowana głównie przez auth_socket plugin, który jest obecnie używany domyślnie, jeśli użytkownik root nie ma hasła. (Dawniej apt-get proces prośba o podanie hasła dla użytkownika root zainstalować, ale nie wydaje się, aby to zrobić już tak auth_socket zostanie włączona.)

Dla obu zapytania, pierwszego logowania jako root za pomocą sudo mysql

MySQL lub MariaDB> = 10,2:

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

dla innych, którzy mogą używać MariaDB < 10.2 (który nie obsługuje ALTER USER), będziemy chcieli, aby uruchomić tę kwerendę:

SET PASSWORD = PASSWORD('test'); 
    update mysql.user set plugin = 'mysql_native_password' where User='root'; 
    FLUSH PRIVILEGES; 
+1

To jest właściwy sposób, aby to zrobić, wystarczy opróżnić tabelę uprawnień, aby mysql się nie denerwował. Nie trzeba wykonywać żadnych resetowań haseł – Turk

1

Wersja serwera: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)

Etap 1:

[email protected]:~$ sudo -i 

Etap 2:

[email protected]:~# mysql 

wynik wygląda następująco:

[email protected]:~$ sudo -i 
[sudo] password for server: 
[email protected]:~# mysql 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 16 
Server version: 5.7.18-0ubuntu0.16.04.1 (Ubuntu) 

Copyright (c) 2000, 2017, 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. 

Etap 3:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '[email protected]'; 

wyjściowa:

Query OK, 0 rows affected (0.00 sec)