EROARE 1698 (28000): Acces interzis pentru utilizatorul 'rădăcină'@'localhost'

Am'm configurarea unui server nou și continua să fie difuzate în această problemă.

Când m-am încercați să vă conectați la baza de date MySQL cu utilizatorul root, primesc eroarea:

EROARE 1698 (28000): Acces interzis pentru utilizatorul 'rădăcină'@'localhost'

Nu't contează dacă am conecta prin terminal(SSH), prin PHPMyAdmin sau un Client MySQL, de exemplu, Navicat. Toate acestea nu reușesc.

M-am uitat în mysql.masa de utilizator și pentru a obține următoarele:

+------------------+-------------------+
| 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 |
+------------------+-------------------+

După cum puteți vedea, rădăcină ar trebui să aibă acces.

Serverul este destul de simplu, așa cum am încercat pentru a depana acest lucru pentru un timp acum..

L's rulează Ubuntu 16.04.1 E cu Apache, MySQL și PHP, astfel încât să poată găzdui site-uri web, și iRedMail 0.9.5-1, astfel încât să poată găzdui e-mail.

Conectare la baza de date MySQL funcționează bine înainte de a mă instala iRedMail. Am încercat, de asemenea, instalarea doar iRedMail, dar apoi rădăcină, de asemenea, nu't de lucru...

Dacă cineva ar putea spune-mi cum să-mi aranjez MySQL login problema sau cum pot instala iRedMail, pe partea de sus a unei existente MySQL instalat. Și da, am încercat Sfaturi de Instalare și pot't găsi acele variabile în fișierele de configurare.

Comentarii la întrebare (2)
Soluția

Unele sisteme, cum ar fi Ubuntu, mysql este folosind implicit UNIX auth_socket plugin.

Practic înseamnă că: db_users folosind-o, va fi "uat" de utilizator de sistem credentias. Puteți vedea dacă dumneavoastră "radacina" utilizatorul este configurat astfel de a face următoarele:

$ 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 |
+------------------+-----------------------+

După cum puteți vedea în interogare, "root", utilizatorul este folosind auth_socket plugin

Există 2 moduri de a rezolva acest lucru:

  1. Puteți seta utilizatorul root pentru a folosi mysql_native_password plugin
  2. Puteți crea un nou utilizator_bd cu tine system_user (recomandat)

Opțiunea 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;

$ service mysql restart

Opțiunea 2: (înlocuiți YOUR_SYSTEM_USER cu numele de utilizator trebuie)

$ 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 '';
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;

$ service mysql restart

Amintiți-vă că, dacă utilizați opțiunea #2'll trebuie să se conecteze la mysql ca sistemul dvs. de utilizator (mysql -u YOUR_SYSTEM_USER)

Notă: Pe unele sisteme (de exemplu, Debian întindere) 'auth_socket' plugin este numit 'unix_socket', astfel încât corespunzătoare SQL command ar trebui să fie: UPDATE user SET de plugin='unix_socket', UNDE Utilizator='YOUR_SYSTEM_USER';

Actualizare: de la @andy's comenteze pare că mysql 8.x.x actualizat/înlocuit auth_socket "pentru" caching_sha2_password eu nu't au un sistem de configurare cu mysql 8.x.x pentru a testa acest lucru, cu toate acestea, pașii de mai sus ar trebui să vă ajute să înțeleagă problema. Aici's a răspuns:

O schimbare de MySQL 8.0.4 este că noua autentificare implicit plugin este 'caching_sha2_password'. Nou 'YOUR_SYSTEM_USER' va avea acest auth plugin și vă puteți conecta la bash shell acum cu "mysql -u YOUR_SYSTEM_USER -p" și să furnizeze parola pentru acest utilizator pe prompt. Nu este nevoie de "UPDATE user SET de plugin" pas. Pentru 8.0.4 default auth plugin actualizare vedea, https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/

Comentarii (23)

Verificați aici:

NOUA Versiune de MYSQL face în acest fel.

În noul my-sql dacă parola este lăsat gol în timp ce instalarea apoi ea se bazează pe auth_socket plugin.

Calea corectă este să vă conectați la my-sql cu "sudo" privilegiu.

$ sudo mysql -u root -p

Și apoi actualizați parola folosind:

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

Odată ce acest lucru este făcut pentru a opri și de a începe la serverul mysql.

$  sudo service mysql stop
$  sudo service mysql start

Pentru detalii complete puteți face referire la acest link.

Nu comentez pentru orice îndoială.

Comentarii (5)

Am avut această problemă pe un Debian 8 NEG că am fost prin interactiunea cu Chit pe Windows 10 desktop.

Am încercat diverse sugestii pe aici, dar nimic nu a lucrat și eu sunt difuzate MariaDB pe Debian gazdă. În final, am constatat că nu puteam't începe db server în modul de siguranță, dar n-am't nevoie pentru a și următoarele comenzi, de fapt, a lucrat pentru mine și anume să permită un nou create MySql utilizator pentru a vă conecta la 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

Dacă cele de mai sus nu't destul de lucru pentru tine, urmați pașii descriși în zetacu's postul de mai sus (zetacu), apoi urmați pașii mei.

Acum ar trebui să fie capabil de a utiliza un terminal de la distanță client și în siguranță a vă conecta la mysql folosind comanda:

mysql -u your_user_name -p

*introduceți parola când vi se solicită

Comentarii (1)

Aș sugera pentru a elimina de conectare Mysql -

UPDATE-Acest lucru este pentru Mysql versiunea 5.5,dacă versiunea dvs. este diferit ,vă rugăm să schimbați prima linie în mod corespunzător

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

Și Instalați din Nou Dar de data asta a seta o parola de root tine. Acest lucru va salva o mulțime de efort.

sudo apt-get update
sudo apt-get install mysql-server
Comentarii (3)

pasul 1. sudo mysql -u root -p

pasul 2. UTILIZAREA mysql;`

pasul 3. ALTER USER 'rădăcină'@'localhost' IDENTIFICAT CU mysql_native_password DE 'admin';

Aici 'admin' este noua ta parola, yo pot schimba.

pasul 4. "ieșire"

Multumesc. Ați terminat.

Comentarii (0)

Mi-am găsit soluția, după ore de cercetare aici.

Stop MySQL

sudo service mysql stop

Asigurați-MySQL directorul de servicii.

sudo mkdir /var/run/mysqld

Dă MySQL utilizator permisiunea de a scrie în directorul de servicii.

sudo chown mysql: /var/run/mysqld

Start MySQL manual, fără permisiunea controale sau de rețea.

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

Autentificare fără parolă.

 mysql -uroot mysql

actualizare parolă

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

Opriți MySQL.

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

Începe serviciul MySQL în mod normal.

sudo service mysql start
Comentarii (0)

Primul pas: du-te la /etc/phpmyadmin/config.inc.php apoi decomentați linii în cazul în care veți găsi AllowNoPassword . Al doilea pas: conectare la mysql default cont

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

și că's toate!

Comentarii (0)

Care a lucrat pentru mine:

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

M-am confruntat cu aceeasi problema la prima dată.

Acum este fix:

În primul rând, de a copia /etc/mysql/mysql.conf.d/mysqld.cnf fișier și trecut în /etc/mysql/my.cnf.

O puteți face prin comanda:

sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/my.cnf

Acum las's Restul parola:

Utilizați următoarele comenzi în terminal:

sudo service mysql stop 
sudo service mysql start
sudo mysql -u root

Acum ești în interiorul consola mysql.

Atunci sa's scrie unele întrebări, să ne resetăm parola de root

USE mysql
update mysql.user set authentication_string=password('newpass') where user='root' and Host ='localhost';
update user set plugin="mysql_native_password"; 
flush privileges;
quit

Acum putem curat /etc/mysql/my.gnc

Deschide fișierul de mai sus în editor și scoateți toată linii în interiorul fișierului.

După care las's restart mysql:

sudo mysql service restart 

Acum las's utilizarea mysql cu parola nou creat:

sudo mysql -u root -p

În cele din urmă să introduceți parola nou creat.

Comentarii (0)

Vrei pentru a accesa MySQL cu root dar're nu furnizează rădăcină's parola corectă.

Dacă aveți nevoie pentru a seta o nouă parolă pentru root, MySQL's site-ul are o mare documentare despre cum se face: http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

Am'll nu arăta procesul aici pentru MySql documentația pe linkul de mai sus - l's clar și concis.

Comentarii (3)

sistem de operare:Ubuntu18.04

mysql:5.7

  1. adauga skip-grant-tables la dosar sfârșitul mysqld.cnf

  2. cp al meu.cnf sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/my.cnf

  3. reseta parola `` (de bază) ➜ ~ sudo service mysql opri (de bază) ➜ ~ sudo service mysql start (de bază) ➜ ~ mysql -uroot Bun venit la MySQL monitorizeze. Comenzile se încheie cu, sau g. Dvs. de conectare MySQL este id-ul 2 Versiune Server: 5.7.25-0ubuntu0.18.04.2 (Ubuntu)

Copyright (c) 2000, 2019, Oracle și/sau filialele sale. Toate drepturile rezervate.

Oracle este o marcă înregistrată a Oracle Corporation și/sau filialele. Alte nume pot fi mărci comerciale ale respectivilor proprietarii.

Tip 'ajutor;' sau '\h' pentru ajutor. Tip '\c' pentru a șterge contul de curent de intrare.

mysql> utilizați mysql Tabel de lectură informații pentru completarea tabelului și numele de coloane Puteți dezactiva această caracteristică pentru a obține o mai repede de pornire cu -O

Baza de date s-a schimbat, 3 avertismente mysql> actualizare mysql.utilizatorul set authentication_string=parola('newpass'), unde utilizator='rădăcină' și Gazdă ='localhost'; Query OK, 1 rând afectat, 1 avertisment (0.00 sec) Rânduri potrivite: 1 s-a Schimbat: 1 Avertismente: 1

mysql> update user set de plugin="mysql_native_password"; Query OK, 0 randuri afectate (0.00 sec) Rânduri potrivit: 4 s-a Schimbat: 0 Avertismente: 0

mysql> culoare privilegii; Query OK, 0 randuri afectate (0.00 sec)

mysql> demisia Pa ``

  1. eliminaskip-grant-tables la mea.cnf

`` (de bază) ➜ ~ sudo emacs /etc/mysql/mysql.conf.d/mysqld.cnf (de bază) ➜ ~ sudo emacs /etc/mysql/my.cnf (de bază) ➜ ~ sudo service mysql restart

4. deschide mysql (de bază) ➜ ~ mysql -uroot -ppassword mysql: [Avertisment] Utilizând o parolă pe interfață linie de comandă poate fi nesigur. Bun venit la MySQL monitorizeze. Comenzile se încheie cu, sau g. Dvs. de conectare MySQL este id-ul 3 Versiune Server: 5.7.25-0ubuntu0.18.04.2 (Ubuntu)

Copyright (c) 2000, 2019, Oracle și/sau filialele sale. Toate drepturile rezervate.

Oracle este o marcă înregistrată a Oracle Corporation și/sau filialele. Alte nume pot fi mărci comerciale ale respectivilor proprietarii.

Tip 'ajutor;' sau '\h' pentru ajutor. Tip '\c' pentru a șterge contul de curent de intrare.

mysql> ``

  1. verificați politica de parole

`` mysql> selectați @@validate_password_policy; +----------------------------+ | @@validate_password_policy | +----------------------------+ | MEDIE | +----------------------------+ 1 rând în set (0.00 sec)

mysql> ARATĂ VARIABILE CA 'validate_password%'; +--------------------------------------+--------+ | Variable_name | Valoarea | +--------------------------------------+--------+ | validate_password_dictionary_file | | | validate_password_length | 8 | | validate_password_mixed_case_count | 1 | | validate_password_number_count | 1 | | validate_password_policy | MEDIU | | validate_password_special_char_count | 1 | +--------------------------------------+--------+ 6 rânduri în set (0.08 sec)! ``

  1. schimba de configurare a validate_password

`` mysql> set global validate_password_policy=0; Query OK, 0 randuri afectate (0.05 sec)

mysql> set global validate_password_mixed_case_count=0; Query OK, 0 randuri afectate (0.00 sec)

mysql> set global validate_password_number_count=3; Query OK, 0 randuri afectate (0.00 sec)

mysql> set global validate_password_special_char_count=0; Query OK, 0 randuri afectate (0.00 sec)

mysql> set global validate_password_length=3; Query OK, 0 randuri afectate (0.00 sec)

mysql> ARATĂ VARIABILE CA 'validate_password%'; +--------------------------------------+-------+ | Variable_name | Valoarea | +--------------------------------------+-------+ | validate_password_dictionary_file | | | validate_password_length | 3 | | validate_password_mixed_case_count | 0 | | validate_password_number_count | 3 | | validate_password_policy | SCĂZUT | | validate_password_special_char_count | 0 | +--------------------------------------+-------+ 6 rânduri în set (0.00 sec) ``

notă ar trebui să știi că ai eroare cauzată de ce? validate_password_policy?

ar trebui sa decis pentru a reseta parola pentru a umple politică sau schimba politica.

Comentarii (0)

Acest lucru s-a întâmplat cu mine. Problema este cu mysql repo care vine deja cu distro linux. Deci, atunci când pur și simplu: $ sudo apt install mysql-server se instaleaza mysql lor implicit repo, care dă această problemă. Deci, pentru a depăși de care aveți nevoie pentru a dezinstala care a instalat mysql $ sudo apt de a elimina mysql* --purge --auto-elimina

Apoi, descărcați mysql repo de la oficial site-ul mysql MySQL APT Repo Urmați documentația cu privire la modul de a adăuga repo și instalați-l. Acest lucru vă oferă nici o problema. De asemenea, ca răspuns de către @zetacu, puteți verifica dacă mysql root acum într-adevăr folosește mysql_native_password plugin

Comentarii (0)