KESALAHAN 1698 (28000): Access denied for user 'root'@'localhost'

I'm menyiapkan server baru dan terus berjalan ke dalam masalah ini.

Ketika saya mencoba untuk login ke database MySQL dengan user root, saya mendapatkan error:

KESALAHAN 1698 (28000): Access denied for user 'root'@'localhost'

Itu doesn't peduli jika saya hubungkan melalui terminal(SSH), melalui PHPMyAdmin atau MySQL Client, misalnya Navicat. Mereka semua gagal.

Aku melihat ke dalam mysql.tabel user dan mendapatkan sebagai berikut:

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

Seperti yang anda lihat, akar harus memiliki akses.

Server ini cukup sederhana, seperti yang saya telah mencoba untuk memecahkan masalah ini untuk sementara waktu sekarang..

It's menjalankan Ubuntu 16.04.1 LTS dengan Apache, MySQL dan PHP, sehingga dapat meng-host situs web, dan iRedMail 0.9.5-1, sehingga dapat meng-host mail.

Login ke database MySQL bekerja dengan baik sebelum saya install iRedMail. Saya juga mencoba, hanya menginstal iRedMail, tapi kemudian akar, juga doesn't bekerja...

Jika seseorang bisa memberitahu saya bagaimana saya memperbaiki saya MySQL login masalah atau bagaimana saya install iRedMail, di atas yang sudah ada MySQL-install. Dan ya, saya mencoba Tips Instalasi dan saya bisa't menemukan variabel-variabel tersebut di file config.

Mengomentari pertanyaan (2)
Larutan

Beberapa sistem seperti Ubuntu, mysql adalah menggunakan secara default UNIX auth_socket plugin.

Pada dasarnya berarti bahwa: db_users menggunakan itu, yang akan menjadi "auth" oleh pengguna sistem credentias. Anda dapat melihat jika anda root pengguna set up seperti ini dengan melakukan hal berikut:

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

Seperti yang anda lihat dalam query, root pengguna menggunakan auth_socket plugin

Ada 2 cara untuk memecahkan masalah ini:

  1. Anda dapat mengatur user root untuk menggunakan mysql_native_password plugin
  2. Anda dapat membuat yang baru db_user dengan anda system_user (disarankan)

Opsi 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

Opsi 2: (ganti YOUR_SYSTEM_USER dengan username anda)

$ 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

Ingat bahwa jika anda menggunakan opsi #2'll harus terhubung ke mysql sebagai sistem username (mysql -u YOUR_SYSTEM_USER)

Catatan: Pada beberapa sistem (misalnya, Debian stretch) 'auth_socket' plugin ini disebut 'unix_socket', sehingga sesuai perintah SQL harus: UPDATE user SET plugin='unix_socket' di MANA User='YOUR_SYSTEM_USER';

Update: dari @andy's komentar tampaknya bahwa mysql 8.x.x diperbaharui/diganti auth_socket untuk caching_sha2_password I don't memiliki sistem pengaturan dengan mysql 8.x.x untuk tes ini, namun langkah-langkah di atas akan membantu anda untuk memahami masalah. Berikut ini's jawaban:

Satu perubahan seperti MySQL 8.0.4 yang baru otentikasi default plugin 'caching_sha2_password'. Baru 'YOUR_SYSTEM_USER' akan memiliki ini auth plugin dan anda dapat login dari bash shell sekarang dengan "mysql -u YOUR_SYSTEM_USER -p" dan memberikan password untuk user ini pada prompt. Tidak perlu untuk "UPDATE user SET plugin" langkah. Untuk 8.0.4 auth default plugin update lihat, https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/

Komentar (23)

Cek di sini:

Versi BARU dari MYSQL melakukannya dengan cara ini.

Di new my-sql jika password dibiarkan kosong sementara menginstal maka hal ini didasarkan pada auth_socket plugin.

Cara yang benar adalah dengan login ke my-sql dengan sudo hak istimewa.

$ sudo mysql -u root -p

Dan kemudian memperbarui password menggunakan:

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

Setelah ini dilakukan stop dan start mysql server.

$  sudo service mysql stop
$  sudo service mysql start

Untuk keterangan lebih lengkap, anda dapat merujuk ke link ini.

Jangan komentar untuk keraguan.

Komentar (5)

Saya sedang mengalami masalah ini pada Debian 8 VM yang saya berinteraksi dengan melalui Putty di Windows 10 desktop.

Saya mencoba berbagai saran di sini tapi tidak cukup bekerja dan saya menjalankan MariaDB pada Debian tuan rumah. Pada akhirnya saya menemukan bahwa saya tidak't memulai db server dalam mode aman tapi aku tidak't perlu dan berikut perintah-perintah yang benar-benar bekerja untuk saya yaitu memungkinkan baru dibuat MySql user untuk login ke 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

Jika di atas doesn't cukup bekerja untuk anda, ikuti langkah-langkah yang diuraikan di zetacu's post di atas (zetacu) kemudian ikuti langkah-langkah saya.

Sekarang anda harus dapat menggunakan remote terminal klien dan aman login ke mysql menggunakan perintah:

mysql -u your_user_name -p

*ketik password saat diminta

Komentar (1)

Saya akan menyarankan untuk menghapus koneksi Mysql -

UPDATE-Ini adalah untuk Mysql versi 5.5,jika anda adalah versi yang berbeda ,harap ubah baris pertama sesuai

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

Dan Install Lagi Tapi kali ini menetapkan password root diri sendiri. Ini akan menghemat banyak usaha.

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

langkah 1. sudo mysql -u root -p

langkah 2. MENGGUNAKAN mysql;

langkah 3. ALTER USER 'root'@'localhost' DIIDENTIFIKASI DENGAN mysql_native_password OLEH 'admin';

Berikut ini 'admin' adalah password baru anda, anda dapat mengubahnya.

langkah 4. keluar

Terima kasih. Anda selesai.

Komentar (0)

Saya menemukan solusi saya setelah berjam-jam penelitian di sini.

Stop MySQL

sudo service mysql stop

Membuat MySQL layanan direktori.

sudo mkdir /var/run/mysqld

Memberikan pengguna MySQL izin untuk menulis ke layanan direktori.

sudo chown mysql: /var/run/mysqld

Mulai MySQL secara manual, tanpa izin pemeriksaan atau jaringan.

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

Log in tanpa password.

 mysql -uroot mysql

update password

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

Matikan MySQL.

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

Mulai layanan MySQL biasanya.

sudo service mysql start
Komentar (0)

Langkah pertama: pergi ke /etc/phpmyadmin/config.inc.php kemudian uncomment baris di mana anda menemukan AllowNoPassword . Langkah kedua: login ke mysql default account

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

dan yang's semua!

Komentar (0)

Yang bekerja untuk saya:

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

Saya juga menghadapi masalah yang sama pada saat pertama.

Sekarang ini adalah tetap:

Pertama, anda copy /etc/mysql/mysql.conf.d/mysqld.cnf file dan masa lalu di /etc/mysql/my.cnf.

Anda dapat melakukannya dengan perintah:

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

Sekarang mari's Sisanya password:

Gunakan perintah berikut di terminal anda:

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

Sekarang anda berada di dalam mysql console.

Kemudian let's menulis beberapa permintaan untuk me-reset root password

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

Sekarang kita bisa bersih-bersih /etc/mysql/my.cng

Membuka file di atas di editor anda dan menghapus seluruh baris dalam file.

Setelah itu let's me-restart mysql:

sudo mysql service restart 

Sekarang mari's menggunakan mysql dengan password yang baru dibuat:

sudo mysql -u root -p

Akhirnya masukkan password yang baru dibuat.

Komentar (0)

Anda ingin mengakses MySQL dengan user root tapi anda're tidak mudah root's password yang benar.

Jika anda perlu mengatur password baru untuk root, MySQL's situs memiliki dokumentasi yang bagus tentang cara untuk melakukannya: http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

I'll tidak menunjukkan proses di sini karena dokumentasi MySql pada link di atas it's jelas dan ringkas.

Komentar (3)

os:Ubuntu18.04

mysql:5.7

  1. tambahkan skip-grant-tables untuk file akhir mysqld.cnf

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

  3. me-reset password `` (dasar) ➜ ~ sudo service mysql stop (dasar) ➜ ~ sudo service mysql start (dasar) ➜ ~ mysql -uroot Welcome to the MySQL monitor. Perintah diakhiri dengan ; atau \g. Your MySQL connection id is 2 Server versi: 5.7.25-0ubuntu0.18.04.2 (Ubuntu)

Hak cipta (c) 2000, 2019, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang.

Oracle adalah merek dagang terdaftar dari Oracle Corporation dan/atau afiliasi. Nama lainnya mungkin merupakan merek dagang dari masing-masing pemilik.

Tipe 'bantuan;' atau '\h' untuk membantu. Tipe '\c' to clear the current input pernyataan.

mysql> menggunakan mysql Membaca tabel informasi untuk menyelesaikan tabel dan nama kolom Anda dapat menonaktifkan fitur ini untuk mendapatkan startup lebih cepat dengan -

Database berubah, 3 peringatan mysql> update mysql.pengguna mengatur authentication_string=password('newpass') where user='root' dan 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) Baris cocok: 4 Berubah: 0 Warnings: 0

mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)

mysql> berhenti Bye ``

  1. menghapusskip-grant-tables dari saya.cnf

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

4. buka mysql (dasar) ➜ ~ mysql -uroot -ppassword mysql: [Warning] Menggunakan password pada command line interface dapat menjadi tidak aman. Welcome to the MySQL monitor. Perintah diakhiri dengan ; atau \g. Your MySQL connection id is 3 Server versi: 5.7.25-0ubuntu0.18.04.2 (Ubuntu)

Hak cipta (c) 2000, 2019, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang.

Oracle adalah merek dagang terdaftar dari Oracle Corporation dan/atau afiliasi. Nama lainnya mungkin merupakan merek dagang dari masing-masing pemilik.

Tipe 'bantuan;' atau '\h' untuk membantu. Tipe '\c' to clear the current input pernyataan.

mysql> ``

  1. periksa kebijakan password

`` mysql> select @@validate_password_policy; +----------------------------+ | @@validate_password_policy | +----------------------------+ | MENENGAH | +----------------------------+ 1 row in set (0.00 sec)

mysql> MENUNJUKKAN variabel-VARIABEL SEPERTI 'validate_password%'; +--------------------------------------+--------+ | Variable_name | Nilai | +--------------------------------------+--------+ | validate_password_dictionary_file | | | validate_password_length | 8 | | validate_password_mixed_case_count | 1 | | validate_password_number_count | 1 | | validate_password_policy | MENENGAH | | validate_password_special_char_count | 1 | +--------------------------------------+--------+ 6 rows in set (0.08 sec)! ``

  1. perubahan konfigurasi dari 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> MENUNJUKKAN variabel-VARIABEL SEPERTI 'validate_password%'; +--------------------------------------+-------+ | Variable_name | Nilai | +--------------------------------------+-------+ | validate_password_dictionary_file | | | validate_password_length | 3 | | validate_password_mixed_case_count | 0 | | validate_password_number_count | 3 | | validate_password_policy | RENDAH | | validate_password_special_char_count | 0 | +--------------------------------------+-------+ 6 rows in set (0.00 sec) ``

catatan anda harus tahu bahwa anda kesalahan yang disebabkan oleh apa? validate_password_policy?

anda harus memutuskan untuk me-reset kata sandi anda untuk mengisi kebijakan atau perubahan kebijakan.

Komentar (0)

Hal ini terjadi pada saya juga. Masalah dengan mysql repo yang datang sudah dengan distro linux. Jadi, ketika anda cukup melakukan: $ sudo apt-get install mysql-server menginstal mysql dari mereka default repo yang memberikan masalah ini. Jadi untuk mengatasi itu anda perlu untuk meng-uninstall yang diinstal mysql $ sudo apt-get remove mysql* --purge-auto-menghapus

Kemudian download mysql repo resmi dari situs mysql MySQL APT Repo Ikuti dokumentasi mereka tentang cara untuk menambahkan repo dan menginstalnya. Hal ini memberikan tidak ada masalah. Juga sebagai dijawab oleh @zetacu, anda dapat memverifikasi bahwa root mysql sekarang memang menggunakan plugin mysql_native_password

Komentar (0)