GNU/Linux >> Znalost Linux >  >> Linux

Jaké je výchozí kořenové heslo pro MySQL 5.7

MySQL 5.7 změnilo zabezpečený model:nyní root přihlášení MySQL vyžaduje sudo

Nejjednodušším (a nejbezpečnějším) řešením bude vytvoření nového uživatele a udělení požadovaných oprávnění.

1. Připojte se k mysql

sudo mysql --user=root mysql

2. Vytvořte uživatele pro phpMyAdmin

CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Reference – https://askubuntu.com/questions/763336/cannot-enter-phpmyadmin-as-root-mysql-5-7


MySQL server 5.7 byl již ve výchozím nastavení nainstalován na mém novém Linux Mint 19.

Ale co je to MySQL root Heslo? Ukázalo se, že:

Výchozí instalace používá auth_socket pro ověřování namísto hesel!

Umožňuje přihlášení bez hesla za předpokladu, že jste přihlášeni do systému Linux pod stejným uživatelským jménem. Chcete-li se přihlásit jako kořen MySQL user , lze použít sudo:

sudo mysql --user=root

Ale jak potom změnit heslo root? Abych ilustroval, co se děje, vytvořil jsem nového uživatele „já“, s plnými právy, s:

mysql> CREATE USER 'me'@'localhost' IDENTIFIED BY 'my_new_password';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'me'@'localhost' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

Porovnání „já“ s „root“:

mysql> SELECT user, plugin, HEX(authentication_string)  FROM mysql.user WHERE user = 'me' or user = 'root';
+------+-----------------------+----------------------------------------------------------------------------+
| user | plugin                | HEX(authentication_string)                                                 |
+------+-----------------------+----------------------------------------------------------------------------+
| root | auth_socket           |                                                                            |
| me   | mysql_native_password | 2A393846353030304545453239394634323734333139354241344642413245373537313... |
+------+-----------------------+----------------------------------------------------------------------------+

Protože používá auth_socket, heslo uživatele root nelze změnit:SET PASSWORD příkaz selže a mysql_secure_installation nedosáhne ničeho...

==> Chcete-li přepnout tento alternativní režim ověřování a vrátit MySQL root uživatele k používání hesel:

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

Dobré vysvětlení.

Další podrobnosti z manuálu MySQL.


Existuje tolik odpovědí, které říkají, že je třeba přeinstalovat mysql nebo použít nějakou kombinaci

mysqld_safe --skip-grant-tables

a / nebo

UPDATE mysql.user SET Password=PASSWORD('password')

a / nebo něco jiného ...

... Nic z toho mi nefungovalo

Zde je to, co pro mě fungovalo na Ubuntu 18.04, shora

Se zvláštním uznáním této odpovědi za to, že mě vykopala z frustrace nad tímto ...

$ sudo apt install mysql-server
$ sudo cat /etc/mysql/debian.cnf

Všimněte si řádků, které zní:

user     = debian-sys-maint
password = blahblahblah

Potom:

$ mysql -u debian-sys-maint -p
Enter password: // type 'blahblahblah', ie. password from debian.cnf

mysql> USE mysql
mysql> SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| User             | Host      | plugin                |
+------------------+-----------+-----------------------+
| root             | localhost | auth_socket           |
| mysql.session    | localhost | mysql_native_password |
| mysql.sys        | localhost | mysql_native_password |
| debian-sys-maint | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
4 rows in set (0.00 sec)

mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> COMMIT;  // When you don't have auto-commit switched on

Buď:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

Nebo:

// For MySQL 5.7+
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') where user='root';

Potom:

mysql> FLUSH PRIVILEGES;
mysql> COMMIT;  // When you don't have auto-commit switched on
mysql> EXIT

$ sudo service mysql restart
$ mysql -u root -p
Enter password: // Yay! 'new_password' now works!

Po instalaci MySQL-community-server 5.7 z čerstvého na linuxu budete muset najít dočasné heslo z /var/log/mysqld.log, abyste se mohli přihlásit jako root.

  1. grep 'temporary password' /var/log/mysqld.log
  2. Spusťte mysql_secure_installation změnit nové heslo

ref:http://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html


Linux
  1. Jaká je nejlepší distribuce Linuxu pro začátečníky?

  2. 5 nejlepších bezplatných náhrad pro server MySQL

  3. Jaký je účel uživatele „mysql.sys@localhost“.

  1. Jaký je účel „uživatele systému“ v replikaci MySQL

  2. K čemu slouží možnost „soname“ pro vytváření sdílených knihoven?

  3. Jaké je ID oddílu / typ souborového systému pro UDF?

  1. Jak resetovat kořenové heslo MySQL?

  2. K čemu se používá skupina `shadow`?

  3. Jaké je výchozí pořadí řazení Linuxu?