Nainstaloval jsem MySQL a během instalace jsem byl požádán o heslo, které jsem zadal, ale nyní můj učitel říká, že bychom se měli být schopni přihlásit jako root bez jakéhokoli hesla.
Funguje to, ale nezískávám žádná oprávnění:
Toto nefunguje:
Ani toto
Přijatá odpověď:
Příčina problému
Výchozí konfigurace pro přihlášení jako root
uživatel v MySQL 5.7 vyžaduje použití autentizačního soketu. To lze ověřit dotazem user
tabulka:
mysql> select user,authentication_string,plugin from user where user='root';
+------+-----------------------+-------------+
| user | authentication_string | plugin |
+------+-----------------------+-------------+
| root | | auth_socket |
+------+-----------------------+-------------+
1 row in set (0.00 sec)
Z dokumentace:
Plugin socket kontroluje, zda se uživatelské jméno socketu (uživatelské jméno operačního
systému) shoduje s uživatelským jménem MySQL zadaným klientským
programem na serveru. Pokud se názvy neshodují, plugin zkontroluje
, zda se uživatelské jméno soketu shoduje s názvem uvedeným ve sloupci
authentication_string v řádku systémové tabulky mysql.user. Pokud je nalezena
shoda, plugin povolí připojení.
Jinými slovy, mysql ve výchozím nastavení nemá nastaveno heslo root – musíte spustit phpMyAdmin jako root nebo pomocí sudo
(obojí je z bezpečnostních důvodů špatný nápad), nebo změníte metodu ověřování a resetujete heslo uživatele root, jak je znázorněno ve výukovém programu Digital Ocean.
Všimněte si, že kromě stejného jména nejsou uživatelé MySQL a uživatelé systému stejní. Můžete mít uživatele MySQL jdoe
a nemají žádného takového uživatele v hostitelském systému. Tedy root
je uživatel root MySQL, nikoli systémový uživatel.
Postup změny pluginu a hesla:
-
otevřete terminál a spusťte
sudo mysql -u root
. Měli byste vidět uvítací zprávu amysql>
výzva. Toto je shell MySQL, který se liší od vašeho shellu příkazového řádku, takže zde jsou přijímány pouze příkazy SQL. -
Zadejte následující sekvenci SQL dotazů:
mysql> use mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> UPDATE user SET plugin='mysql_native_password',authentication_string=PASSWORD('newpassword') WHERE user = 'root'; Query OK, 1 row affected, 1 warning (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 1
-
Ukončete a pokuste se přihlásit:
mysql> exit Bye $ sudo systemctl restart mysql $ sudo mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.7.21-1 (Debian) Copyright (c) 2000, 2018, 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>
Pokud vše půjde dobře, měli byste být schopni se přihlásit z phpMyAdmin pomocí nového hesla. Pokud se něco pokazí, pokuste se restartovat server bez kontroly oprávnění (to je krok č. 3 v tutoriálu Digital Ocean). V případě jiných problémů se neváhejte zeptat na další otázku zde nebo na Správci databází – Stack Exchange
Související:Vytvořit soubory LOG při vytváření více souborů DATA pro tempdb?