GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak se přihlásit jako root v Mysql?

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:

  1. otevřete terminál a spusťte sudo mysql -u root . Měli byste vidět uvítací zprávu a mysql> 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.

  2. 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
    
  3. 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?
Ubuntu
  1. Jak obnovit heslo root MySQL

  2. Jak resetovat kořenové heslo MySQL nebo MariaDB

  3. Jak resetovat kořenové heslo MySQL

  1. Jak nainstalovat MySQL na AlmaLinux 8

  2. Jak obnovit heslo root MySQL Server

  3. Jak nainstalovat MySQL na Ubuntu 18.04 LTS

  1. Jak vypsat všechny uživatele v databázi MySQL

  2. Jak odebrat nebo smazat uživatelský účet MySQL

  3. Jak obnovit heslo root MySQL