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.
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:
mysql_native_password
pluginat.db_user
koos system_user
iga (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/
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
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.