VIGA 1698 (28000): Kasutajale 'root'@'localhost&#39 juurdepääs keelatud;

Olen uue serveri loomisel ja puutun pidevalt kokku selle probleemiga.

Kui ma üritan MySQL andmebaasi sisse logida root-kasutajaga, saan ma vea:

ERROR 1698 (28000): @'localhost'kasutaja 'root'@'juurdepääs keelatud;

Ei ole vahet, kas ma ühendun terminali(SSH), PHPMyAdmini või MySQL-kliendi, nt Navicat, kaudu. Nad kõik ebaõnnestuvad.

Vaatasin mysql.user tabelisse ja saan järgmist:

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

Nagu näete, peaks rootil olema juurdepääs.

Server on üsna lihtne, sest ma olen juba mõnda aega üritanud seda tõrkeotsingut teha...

Ta töötab Ubuntu 16.04.1 LTS koos Apache, MySQL ja PHP, nii et ta saab hostida veebilehti, ja iRedMail 0.9.5-1, nii et ta saab hostida posti.

MySQL andmebaasi sisselogimine toimib enne iRedMaili paigaldamist suurepäraselt. Ma proovisin ka, lihtsalt paigaldada iRedMail, kuid siis root, ka ei'ei tööta...

Kui keegi võiks mulle öelda, kuidas ma parandada minu MySQL sisselogimise probleem või kuidas ma paigaldada iRedMail, peal olemasoleva MySQL installi. Ja jah, ma proovisin Installeerimisnippe ja ma ei'lesta neid muutujaid config-failides.

Lahendus

Mõnedes süsteemides, nagu Ubuntu, kasutab mysql vaikimisi UNIX auth_socket plugin.

Põhimõtteliselt tähendab see, et: db_kasutajad, kes seda kasutavad, on "auth" süsteemi kasutaja credentias. Saate näha, kas teie root kasutaja on selliselt seadistatud, tehes järgmist:

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

Nagu te näete päringust, kasutab root kasutaja auth_socket pluginat.

Selle lahendamiseks on 2 võimalust:

  1. Saate määrata root kasutaja kasutama mysql_native_password pluginat.
  2. Te võite luua uue db_user koos system_useriga (soovitatav).

Võimalus 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

Võimalus 2: (asendage YOUR_SYSTEM_USER kasutajanimega, mis teil on)

$ 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

Pea meeles, et kui kasutad valikut #2, pead sa ühenduma mysql-i oma süsteemi kasutajanimega (mysql -u YOUR_SYSTEM_USER).

Märkus: Mõnes süsteemis (nt Debian stretch) on 'auth_socket' plugin nimega 'unix_socket', seega peaks vastav SQL käsk olema: UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';.

Update: @andy's kommentaarist tundub, et mysql 8.x.x uuendas/asendas auth_socket jaoks caching_sha2_password Mul ei ole mysql 8.x.x.x süsteemiga seadistatud, et seda testida, kuid ülaltoodud sammud peaksid aitama probleemi mõistmisel. Siin'on vastus:

Üks muudatus alates MySQL 8.0.4 on see, et uus vaikimisi autentimise plugin on 'caching_sha2_password'. Uuel 'YOUR_SYSTEM_USER' on see auth plugin ja nüüd saab bash shell'ist sisse logida "mysql -u YOUR_SYSTEM_USER -p" ja anda selle kasutaja parool käsureale. Ei ole vaja "UPDATE user SET plugin" sammu. 8.0.4 vaikimisi auth plugina uuendamise kohta vt, https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/

Kommentaarid (23)

Soovitan eemaldada Mysql-ühenduse -

UPDATE-see on Mysql versioon 5.5, kui teie versioon on erinev, palun muutke esimene rida vastavalt.

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

Ja paigalda uuesti Aga seekord määra ise root parool. See säästab palju vaeva.

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

Sa tahad MySQL-i kasutada root-kasutajaga, kuid sa ei anna root'ile õiget parooli.

Kui teil on vaja seadistada root'ile uus parool, on MySQL'i saidil suurepärane dokumentatsioon selle kohta, kuidas seda teha: http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html.

Ma ei näita siin protsessi, sest MySql dokumentatsioon ülaltoodud lingil on selge ja ülevaatlik.

Kommentaarid (3)