FOUT 1698 (28000): Toegang geweigerd voor gebruiker ‘Root’ @ ‘localhost’

Ik ben een nieuwe server in en blijf dit probleem in.

Wanneer ik probeer in te loggen bij de MySQL-database met de root-gebruiker, krijg ik de foutmelding:

FOUT 1698 (28000): Toegang geweigerd voor gebruiker ‘root’ @ ‘localhost’

Het maakt niet uit of ik verbinding maakt via de terminal (SSH), via PHPMYADMIN of een MySQL-client, b.v. Navicat. Ze falen allemaal.

Ik keek in de MySQL.USER-tabel en ontvang het volgende:

+------------------+-------------------+
| user             | host              |
+------------------+-------------------+
| root             | %                 |
| root             | 127.0.0.1         |
| amavisd          | localhost         |
| debian-sys-maint | localhost         |
| iredadmin        | localhost         |
| iredapd          | localhost         |
| mysql.sys        | localhost         |
| phpmyadmin       | localhost         |
| root             | localhost         |
| roundcube        | localhost         |
| vmail            | localhost         |
| vmailadmin       | localhost         |
| amavisd          | test4.folkmann.it |
| iredadmin        | test4.folkmann.it |
| iredapd          | test4.folkmann.it |
| roundcube        | test4.folkmann.it |
| vmail            | test4.folkmann.it |
| vmailadmin       | test4.folkmann.it |
+------------------+-------------------+

Zoals u kunt zien, moet de root toegang hebben.

De server is vrij eenvoudig, omdat ik heb geprobeerd dit een tijdje op te lossen ..

Het wordt Ubuntu 16.04.1 LTS met Apache, MySQL en PHP uitgevoerd, zodat deze websites kan hosten en Iredmail 0.9.5-1, zodat het e-mail kan hosten.

Aanmelden bij de MySQL-database werkt prima voordat ik iRedMail installeer. Ik heb het ook geprobeerd, alleen iRedMail installeren, maar dan rooten, werkt ook niet…

Als iemand me kan vertellen hoe ik mijn MySQL-aanmeldingsprobleem oplos of hoe ik iRedMail installeer, bovenop een bestaande MySQL-installatie. En ja, ik heb de Installatietipsgeprobeerd en ik kan het niet vinden die variabelen in de configuratiebestanden.


Antwoord 1, autoriteit 100%

Sommige systemen zoals Ubuntu, mysql gebruikt standaard de UNIX auth_socket-plug-in.

Betekent in feite dat: db_users die het gebruiken, worden “auth” door de systeemgebruikersreferenties.U kunt zien of uw root-gebruiker is zo ingesteld door het volgende te doen:

$ sudo mysql -u root # I had to use "sudo" since is new installation
mysql> USE mysql;
mysql> SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------------------+
| User             | plugin                |
+------------------+-----------------------+
| root             | auth_socket           |
| mysql.sys        | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+

Zoals je kunt zien in de zoekopdracht, gebruikt de root-gebruiker de auth_socket-plug-in

Er zijn 2 manieren om dit op te lossen:

  1. U kunt de rootgebruiker instellen om de plug-in mysql_native_password
  2. te gebruiken

  3. U kunt een nieuwe db_usermaken met uw system_user(aanbevolen)

Optie 1:

$ sudo mysql -u root # I had to use "sudo" since is new installation
mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;
$ sudo service mysql restart

Optie 2:(vervang YOUR_SYSTEM_USER door de gebruikersnaam die je hebt)

$ sudo mysql -u root # I had to use "sudo" since is new installation
mysql> USE mysql;
mysql> CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY 'YOUR_PASSWD';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost';
mysql> UPDATE user SET plugin='auth_socket' WHERE User='YOUR_SYSTEM_USER';
mysql> FLUSH PRIVILEGES;
mysql> exit;
$ sudo service mysql restart

Houd er rekening mee dat als u optie #2 gebruikt, u verbinding moet maken met mysql als uw systeemgebruikersnaam (mysql -u YOUR_SYSTEM_USER)

Opmerking:Op sommige systemen (bijv. Debian stretch) wordt de ‘auth_socket’-plug-in ‘unix_socket’, dus het bijbehorende SQL-commando moet zijn: UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';

Bijwerken:
uit de opmerking van @andy blijkt dat mysql 8.xx de auth_socketvoor caching_sha2_passwordheeft bijgewerkt/vervangen. Ik heb geen systeemconfiguratie met mysql 8.xx om dit te testen, maar de bovenstaande stappen zouden u moeten helpen het probleem te begrijpen. Hier is het antwoord:

Een verandering vanaf MySQL 8.0.4 is dat de nieuwe standaard authenticatie-plug-in ‘caching_sha2_password’ is. De nieuwe ‘YOUR_SYSTEM_USER’ heeft deze auth-plug-in en je kunt nu inloggen vanuit de bash-shell met “mysql -u YOUR_SYSTEM_USER -p” en het wachtwoord voor deze gebruiker op de prompt opgeven. De stap “UPDATE user SET plugin” is niet nodig. Voor de 8.0.4 standaard auth plugin-update zie, https ://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/


Antwoord 2, autoriteit 18%

NIEUWE versie van MYSQL doet het op deze manier.

In de nieuwe my-sqlals het wachtwoord leeg wordt gelaten tijdens de installatie, dan is het gebaseerd op de auth_socketplug-in.

De juiste manier is om in te loggen op my-sql met sudoprivilege.

$ sudo mysql -u root -p

En dan het wachtwoord bijwerken met:

$ ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password';

Zodra dit gedaan is stop and startde mysql-server.

$  sudo service mysql stop
$  sudo service mysql start

Voor volledige details kunt u verwijzen naar deze link.


Antwoord 3

Geen sudo nodig

De database wordt geïnitialiseerd met 2 All-Privilege-accounts: de eerste is “root” die is ontoegankelijk en de tweede met uw gebruikersnaam (controleer met opdracht whoami).

Om toegang tot root-account in te schakelen, moet u inloggen met uw gebruikersnaam

mysql -u $(whoami)

Wijzig het wachtwoord handmatig voor root

use mysql;
set password for 'root'@'localhost' = password('YOUR_ROOT_PASSWORD_HERE');
flush privileges;
quit

Login als ‘root’

mysql -u root -p

4

Ik had dit probleem op een Debian 8 VM die ik interactie had met PUTTY op My Windows 10 Desktop.

Ik probeerde hier de verschillende suggesties, maar niets werkte en ik gebruik Mariadb op de Debian-host. Uiteindelijk ontdekte ik dat ik de DB-server in de veilige modus niet kon starten, maar ik hoefde niet naar en de volgende opdrachten werkten eigenlijk voor mij, dwz het toestaan ​​van een nieuw gecreëerde MySQL-gebruiker om in te loggen op de MySQL / MARIADB-server:

sudo service mysql restart
sudo mysql # logs in automatically into MariaDB
use mysql;
update user set plugin='' where user='your_user_name';
flush privileges;
exit;
sudo service mysql restart # restarts the mysql service

Als het bovenstaande niet helemaal voor u werkt, volgt u de stappen die worden geschetst in de bovenstaande post van Zetacu (ZETACU ) volg mijn stappen.

Nu moet u een externe terminalclient gebruiken en veilig inloggen op MySQL met behulp van de opdracht:

mysql -u your_user_name -p

*typ het wachtwoord in wanneer daarom wordt gevraagd


Antwoord 5

Na urenlang worstelen zonder oplossing hier, werkte dit voor mij en toen vond ik een YouTube-video waarin staat dat de wachtwoordkolom nu authenticatie_string heet. Dus ik kon mijn wachtwoord als volgt wijzigen:
Ga eerst naar mysql vanuit terminal

sudo mysql

typ dan in mysql wat dan ook na mysql>

mysql> use mysql
mysql> update user set authentication_string=PASSWORD("mypass") where user='root';
mysql> flush privileges;
mysql> quit;

op dit punt bent u uit mysql terug naar uw normale terminalplaats. U moet mysql opnieuw starten om dit te activeren. voor dat type het volgende:

sudo service mysql restart

Raadpleeg deze videolinkvoor een beter begrip


Antwoord 6

stap 1. sudo mysql -u root -p

stap 2. USE mysql;

stap 3. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';

Hier is ‘admin’ uw nieuwe wachtwoord, u kunt het wijzigen.

stap 4. exit

Bedankt. Je bent klaar.


Antwoord 7

Ik stel voor om de Mysql-verbinding te verwijderen –

UPDATE-Dit is voor Mysql-versie 5.5, als uw versie anders is, wijzigt u de eerste regel dienovereenkomstig

sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-5.5 mysql-client-core-5.5
sudo rm -rf /etc/mysql /var/lib/mysql
sudo apt-get autoremove
sudo apt-get autoclean

En opnieuw installeren Maar stel deze keer zelf een root-wachtwoord in.
Dit bespaart een hoop moeite.

sudo apt-get update
sudo apt-get install mysql-server

Antwoord 8

Datwerkte voor mij:

mysql --user=root mysql
CREATE USER 'some_user'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'some_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Antwoord 9

Er is een goede en regelmatig bijgewerkte handleiding voor het instellen van een nieuw wachtwoord voor de nieuwste MySQL.

https://www .digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-20-04

Het zou het beste zijn om het hele onderwerp van de bovenstaande link te lezen, maar kortom, dit zou misschien kunnen helpen,

Voer het beveiligingsscript uit:

sudo mysql_secure_installation

Gedetailleerde informatie voor “mysql_secure_installation”

Daarna kunt u het wachtwoord wijzigen door de volgende stappen te volgen

sudo mysql

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';

Gedetailleerde informatie voor het wijzigen van het root-gebruikerswachtwoord

Als je een probleem hebt, moet je misschien MySql opnieuw installeren.


Antwoord 10

Eerste stap: ga naar /etc/phpmyadmin/config.inc.php en verwijder de commentaarregels waar u AllowNoPassword vindt.
Tweede stap: log in op uw mysql-standaardaccount

mysql -u root -p
use mysql;
update user set plugin="" where user='root';
flush privilege;

en dat is alles!


11

OS: ubuntu18.04

MySQL: 5.7

  1. Voeg de skip-grant-tablesnaar het bestand Einde van MySQLD.CNF

  2. CP de MY.CNF

sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/my.cnf
  1. Reset het wachtwoord
(base) ➜  ~ sudo service mysql stop 
(base) ➜  ~ sudo service mysql start
(base) ➜  ~ mysql -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.25-0ubuntu0.18.04.2 (Ubuntu)
Copyright (c) 2000, 2019, 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> 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, 3 warnings
mysql> update mysql.user set authentication_string=password('newpass') where user='root' and Host ='localhost';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1
mysql> update user set plugin="mysql_native_password"; 
Query OK, 0 rows affected (0.00 sec)
Rows matched: 4  Changed: 0  Warnings: 0
mysql>  flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye
  1. verwijder deskip-grant-tablesuit my.cnf
(base) ➜  ~ sudo emacs /etc/mysql/mysql.conf.d/mysqld.cnf 
(base) ➜  ~ sudo emacs /etc/mysql/my.cnf                 
(base) ➜  ~ sudo service mysql restart
  1. open de mysql
(base) ➜  ~ mysql -uroot -ppassword 
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.25-0ubuntu0.18.04.2 (Ubuntu)
Copyright (c) 2000, 2019, 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> 
  1. controleer het wachtwoordbeleid
mysql> select @@validate_password_policy;
+----------------------------+
| @@validate_password_policy |
+----------------------------+
| MEDIUM                     |
+----------------------------+
1 row in set (0.00 sec)
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_dictionary_file    |        |
| validate_password_length             | 8      |
| validate_password_mixed_case_count   | 1      |
| validate_password_number_count       | 1      |
| validate_password_policy             | MEDIUM |
| validate_password_special_char_count | 1      |
+--------------------------------------+--------+
6 rows in set (0.08 sec)!
  1. wijzig de configuratie van het validate_password
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.05 sec)
mysql> set global validate_password_mixed_case_count=0;
Query OK, 0 rows affected (0.00 sec)
mysql> set global validate_password_number_count=3;
Query OK, 0 rows affected (0.00 sec)
mysql> set global validate_password_special_char_count=0;
Query OK, 0 rows affected (0.00 sec)
mysql> set global validate_password_length=3;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password_dictionary_file    |       |
| validate_password_length             | 3     |
| validate_password_mixed_case_count   | 0     |
| validate_password_number_count       | 3     |
| validate_password_policy             | LOW   |
| validate_password_special_char_count | 0     |
+--------------------------------------+-------+
6 rows in set (0.00 sec)

opmerking
je moet weten dat je fout veroorzaakt door wat? valid_password_policy?

u zou moeten besluiten uw wachtwoord opnieuw in te stellen om het beleid te vullen of het beleid te wijzigen.


Antwoord 12

Ik heb hier mijn oplossing gevonden na urenlang onderzoek.

MySQL stoppen

sudo service mysql stop

Maak een MySQL-servicemap.

sudo mkdir /var/run/mysqld

Geef de MySQL-gebruiker toestemming om naar de servicedirectory te schrijven.

sudo chown mysql: /var/run/mysqld

Start MySQL handmatig, zonder toestemmingscontroles of netwerken.

sudo mysqld_safe --skip-grant-tables --skip-networking &

Log in zonder wachtwoord.

mysql -uroot mysql

wachtwoord bijwerken

UPDATE mysql.user SET authentication_string=PASSWORD('YOURNEWPASSWORD'), plugin='mysql_native_password' WHERE User='root' AND Host='%';
EXIT;

Schakel MySQL uit.

sudo mysqladmin -S /var/run/mysqld/mysqld.sock shutdown

Start de MySQL-service normaal.

sudo service mysql start

Antwoord 13

De eerste

sudo mysql -u root -p
SHOW VARIABLES LIKE 'validate_password%';

we zullen zoiets als dit zien:

+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password.check_user_name    | ON     |
| validate_password.dictionary_file    |        |
| validate_password.length             | 8      |
| validate_password.mixed_case_count   | 1      |
| validate_password.number_count       | 1      |
| validate_password.policy             | MEDIUM |
| validate_password.special_char_count | 1      |
+--------------------------------------+--------+

We moeten deze rijen wijzigen

  1. validate_password.length
  2. validate_password.number_count
  3. validate_password.policy
  4. validate_password.special_char_count
SET GLOBAL validate_password.policy=LOW;
SET GLOBAL validate_password.length=4;
SET GLOBAL validate_password.number_count=0;
SET GLOBAL validate_password.special_char_count=0;
SHOW VARIABLES LIKE 'validate_password%';

// we zullen

zien

+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password.check_user_name    | ON    |
| validate_password.dictionary_file    |       |
| validate_password.length             | 4     |
| validate_password.mixed_case_count   | 1     |
| validate_password.number_count       | 0     |
| validate_password.policy             | LOW   |
| validate_password.special_char_count | 0     |
+--------------------------------------+-------+

Ga nu af van MySQL

exit;
sudo mysql -u root -p

En nu kunt u uw wachtwoord 4 of meer letters schrijven.

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password';
exit;
sudo mysql -u root -p

uw nieuwe wachtwoord staat in DB voor gebruiker ‘root’;


Antwoord 14

Je wilt toegang tot MySQL met een rootgebruiker, maar je geeft niet het juiste wachtwoord van root op.

Als u een nieuw wachtwoord voor root moet instellen, heeft de MySQL-site geweldige documentatie over hoe u dit moet doen: http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

Ik zal het proces hier niet laten zienomdat MySql-documentatieop de bovenstaande link het is duidelijk en beknopt.


Antwoord 15

Dit is mij ook overkomen. Het probleem is met de mysql-repo die al bij de linux-distro wordt geleverd. Dus als je gewoon doet:
$ sudo apt install mysql-server
het installeert mysql vanuit hun standaard repo die dit probleem geeft. Dus om dat te overwinnen, moet je de geïnstalleerde mysql verwijderen
$ sudo apt remove mysql* --purge --auto-remove

Download vervolgens mysql-repo van de officiële mysql-website MySQL APT Repo
Volg hun documentatie over het toevoegen van een repo en het installeren ervan.
Dit geeft geen probleem.
Ook zoals beantwoord door @zetacu, kun je verifiëren dat mysql root nu inderdaad de mysql_native_password plug-in gebruikt


Antwoord 16

in mijn geval,

[email protected]:~$ mysql -u root -p
Enter password: 
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

Ik weet zeker dat mijn wachtwoord correct was, anders zou de foutcode ERROR 1045 (28000): Access denied for user

zijn

dus ik log opnieuw in met sudo,

[email protected]:~$ sudo mysql -u root -p

deze keer werkte het voor mij. zie de docs

en verander dan het root-wachtwoord,

mysql> alter user 'root'@'%' identified with mysql_native_password by 'me123';
Query OK, 0 rows affected (0.14 sec)
mysql> 

start vervolgens de server opnieuw met sudo /etc/init.d/mysql restart


Antwoord 17

Ik heb de volgende stappen uitgevoerd om van dit probleem af te komen.
Log in op de MySQL op uw computer met (sudo mysql -p -u root) en voer de volgende vragen uit.

1. CREATE USER 'jack'@'localhost' IDENTIFIED WITH mysql_native_password BY '<<any password>>';
2. GRANT ALL PRIVILEGES ON *.* TO 'jack'@'localhost';
3. SELECT user,plugin,host FROM mysql.user WHERE user = 'root';
+------+-------------+-----------+
| user | plugin      | host      |
+------+-------------+-----------+
| root | auth_socket | localhost |
+------+-------------+-----------+
4. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<<any password>>';
5. FLUSH PRIVILEGES;

Probeer het een keer als je de foutmelding nog steeds krijgt. Ik hoop dat deze code je veel zal helpen !!


Antwoord 18

voor iedereen die de oplossing hier heeft geprobeerd en niets werkt, zorg ervoor dat u het juiste commando gebruikt, sudo sudo mysql -u root -pen niet mysql mysql -u root -p, moet u twee wachtwoorden invoeren, die van de huidige gebruiker en die van de root.


Antwoord 19

Laat me het voor je oplossen.

  • Kom in de sql.
  • Voer het volgende in.
SET GLOBAL validate_password.length = 4;
SET GLOBAL validate_password.mixed_case_count = 0;
SET GLOBAL validate_password.number_count = 0;
SET GLOBAL validate_password.policy = LOW;
SET GLOBAL validate_password.special_char_count = 0;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';

Alleen voor testdoeleinden.

Other episodes