Dzisiaj chciałem stworzyć bazę danych w PMA. Napisano: „Nie można zalogować się do serwera MySQL”. Próbowałem przez terminal, ten sam problem, a to dlatego, że moje hasło jest nieprawidłowe. I nie rozumiem dlaczego.
Próbowałem zwykłej metody zresetowania hasła roota (pomiń montowanie tabel grantu i zresetuj hasło), ale wygląda na to, że to nie działa.
Zobaczyć, że:
morgan@rakija:~$ sudo mysqld_safe --skip-grant-tables &
[1] 14016
morgan@rakija:~$ 150802 19:07:25 mysqld_safe Can't log to error log and syslog at the same time. Remove all --log-error configuration options for --syslog to take effect.
150802 19:07:25 mysqld_safe Logging to '/var/log/mysql/error.log'.
150802 19:07:25 mysqld_safe A mysqld process already exists
[1]+ Terminé 1 sudo mysqld_safe --skip-grant-tables
morgan@rakija:~$ mysql -u root
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 10.0.20-MariaDB-0ubuntu0.15.04.1 (Ubuntu)
Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> use mysql;
Database changed
MariaDB [mysql]> update user set password=PASSWORD("newPass") where user='root';
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4 Changed: 4 Warnings: 0
MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [mysql]> exit
Bye
morgan@rakija:~$ sudo service mysql restart
morgan@rakija:~$ mysql -uroot -pnewPass
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
. Najlepszym rozwiązaniem jest więc używanie domyślnego uwierzytelniania gniazda UNIX za pomocą poleceniasudo mysql -u root
, które moim zdaniem jest również bardziej bezpieczne i wydajne.Z tej odpowiedzi http://ubuntuforums.org/showthread.php?t=2275033&p=13272227#post13272227 .
Mysql próbuje uwierzytelnić root'a za pomocą wtyczki, a nie hasła. Musisz wyłączyć użycie wtyczki dla roota.
źródło
Could not open mysql.plugin table.
w dzienniku błędów.Połącz jak opisano wcześniej:
Plik dziennika zostanie wyświetlony:
Przeszukaj dziennik (w tym przypadku: /usr/local/mysql/data/ab123456.domain.com.err) w celu znalezienia odpowiedniego gniazda:
i użyj go w połączeniu mysql:
źródło
$ mysqld_safe --skip-grant-tables 190818 14:13:35 mysqld_safe Logging to '/usr/local/var/mylaptop.local.err'. 190818 14:13:35 mysqld_safe Starting mysqld daemon with databases from /usr/local/var
ale właśnie wróciłem do zachęty.Domyślnie marriadb używa wtyczki uwierzytelniającej „unix_socket” do ustawiania haseł, powinno to być „mysql_native_password”, więc
przełącz bazę danych ..
najpierw zobacz, czy wtyczka jest ustawiona.
ustaw na „mysql_native_password”
ustaw nowe hasło ...
źródło