Saya sedang menyiapkan server baru dan terus mengalami masalah ini.
Ketika saya mencoba masuk ke database MySQL dengan pengguna root, saya mendapatkan kesalahan:
GALAT 1698 (28000): Akses ditolak untuk 'root' @ 'localhost' pengguna
Tidak masalah jika saya terhubung melalui terminal (SSH), melalui PHPMyAdmin atau Klien MySQL, misalnya Navicat. Mereka semua gagal.
Saya mencari di tabel mysql.user dan mendapatkan yang berikut ini:
+------------------+-------------------+
| 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, root harus memiliki akses.
Servernya cukup sederhana, karena saya sudah mencoba memecahkan masalah ini untuk sementara waktu sekarang ..
Ini 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 email.
Login ke database MySQL berfungsi dengan baik sebelum saya menginstal iRedMail. Saya juga mencoba, hanya menginstal iRedMail, tetapi kemudian root, juga tidak berfungsi ...
Jika seseorang dapat memberi tahu saya cara memperbaiki masalah login MySQL saya atau cara saya menginstal iRedMail, di atas instalasi MySQL yang ada. Dan ya saya mencoba Tips Instalasi dan saya tidak dapat menemukan variabel-variabel dalam file konfigurasi.
sudo mysql_secure_installation
adalah cara termudah untuk memperbaikinyaJawaban:
Beberapa sistem seperti Ubuntu, mysql menggunakan secara default plugin UNIX auth_socket .
Pada dasarnya berarti bahwa: db_users yang menggunakannya, akan "auth" oleh kredensial pengguna sistem. Anda dapat melihat apakah
root
pengguna Anda diatur seperti ini dengan melakukan hal berikut:Seperti yang Anda lihat dalam kueri,
root
pengguna menggunakanauth_socket
pluginAda 2 cara untuk menyelesaikan ini:
mysql_native_password
plugindb_user
dengan Andasystem_user
(disarankan)Pilihan 1:
Opsi 2: (ganti YOUR_SYSTEM_USER dengan nama pengguna yang Anda miliki)
Ingat bahwa jika Anda menggunakan opsi # 2 Anda harus terhubung ke mysql sebagai nama pengguna sistem Anda (
mysql -u YOUR_SYSTEM_USER
)Catatan: Pada beberapa sistem (misalnya, Debian stretch) plugin 'auth_socket' disebut 'unix_socket' , jadi perintah SQL yang sesuai adalah:
UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';
Pembaruan: dari komentar @ andy tampaknya mysql 8.xx diperbarui / diganti
auth_socket
karenacaching_sha2_password
saya tidak memiliki pengaturan sistem dengan mysql 8.xx untuk menguji ini, namun langkah-langkah di atas akan membantu Anda untuk memahami masalah ini. Inilah jawabannya:Satu perubahan pada MySQL 8.0.4 adalah bahwa plugin otentikasi default baru adalah 'caching_sha2_password'. 'YOUR_SYSTEM_USER' yang baru akan memiliki plugin auth ini dan Anda dapat masuk dari bash shell sekarang dengan "mysql -u YOUR_SYSTEM_USER -p" dan memberikan kata sandi untuk pengguna ini saat diminta. Tidak perlu untuk langkah "UPDATE user SET plugin". Untuk pembaruan plugin autentikasi 8.0.4 lihat, https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/
sumber
sudo gedit /etc/phpmyadmin/config.inc.php
. Kemudian saya melakukan pencarianAllowNoPassword
dan menghapus komentar kedua baris yang berisi itu. Kemudian saya bisa login sebagai root tanpa kata sandi.IDENTIFIED BY ''
sedikit mungkin harusIDENTIFIED BY 'YOUR_PASSWD'
mysqld_safe --skip-grant-tables
etc, dan itu tidak berfungsi.sudo mysql -u root -p
tidak membiarkan saya masuk?Periksa di sini:
Versi BARU dari MYSQL melakukannya dengan cara ini.
Di my-sql baru jika kata sandi dibiarkan kosong saat menginstal maka didasarkan pada
auth_socket
plugin.Cara yang benar adalah dengan login ke my-sql dengan
sudo
privilege.Dan kemudian memperbarui kata sandi menggunakan:
Setelah ini dilakukan
stop and start
server mysql.Untuk detail lengkap, Anda bisa merujuk ke tautan ini .
Berikan komentar untuk keraguan.
sumber
Saya mengalami masalah ini pada Debian 8 VM yang berinteraksi dengan saya melalui Putty di desktop Windows 10 saya.
Saya mencoba berbagai saran di sini tetapi tidak ada yang berhasil dan saya menjalankan MariaDB pada host Debian. Pada akhirnya saya menemukan bahwa saya tidak dapat memulai server db dalam safe mode tetapi saya tidak perlu dan perintah-perintah berikut ini benar-benar bekerja untuk saya yaitu memungkinkan pengguna MySql yang baru dibuat untuk masuk ke server MySql / MariaDB:
Jika hal di atas tidak berhasil bagi Anda, ikuti langkah-langkah yang diuraikan dalam pos zetacu di atas ( zetacu ) lalu ikuti langkah saya.
Sekarang Anda harus dapat menggunakan klien terminal jarak jauh dan masuk dengan aman ke mysql menggunakan perintah:
* ketikkan kata sandi saat diminta
sumber
Saya akan menyarankan untuk menghapus koneksi Mysql -
UPDATE-Ini untuk Mysql versi 5.5, jika versi Anda berbeda, silakan ubah baris pertama sesuai
Dan Pasang Lagi Tapi kali ini tentukan sendiri kata sandi root. Ini akan menghemat banyak usaha.
sumber
Setelah berjam-jam berjuang tanpa solusi di sini, ini berhasil bagi saya kemudian saya menemukan video youtube di mana ia mengatakan kolom kata sandi sekarang disebut authentication_string. Jadi saya bisa mengubah kata sandi saya sebagai berikut: Pertama masuk ke mysql dari terminal
kemudian di dalam tipe mysql apa pun setelah mysql>
pada titik ini Anda keluar dari mysql kembali ke tempat terminal normal Anda. Anda harus memulai ulang mysql agar ini berlaku. untuk jenis itu yang berikut ini:
Lihat tautan video ini untuk pemahaman yang lebih baik
sumber
Langkah 1.
sudo mysql -u root -p
Langkah 2.
USE mysql;
langkah 3.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';
Di sini 'admin' adalah kata sandi baru Anda, Anda dapat mengubahnya.
langkah 4.
exit
Terima kasih. Kamu selesai.
sumber
Tidak perlu sudo
Basis data diinisialisasi dengan 2 akun semua hak istimewa: yang pertama adalah "root" yang tidak dapat diakses dan yang kedua dengan nama pengguna Anda (periksa dengan perintah
whoami
).Untuk mengaktifkan akses ke akun root, Anda harus masuk dengan nama pengguna Anda
dan secara manual mengubah kata sandi untuk root
Masuk sebagai 'root'
sumber
Langkah pertama: pergi ke /etc/phpmyadmin/config.inc.php lalu batalkan komentar pada baris tempat Anda menemukan AllowNoPassword. Langkah kedua: masuk ke akun default mysql Anda
dan itu saja!
sumber
Itu berhasil bagi saya:
sumber
Saya juga menghadapi masalah yang sama pada saat pertama.
Sekarang sudah diperbaiki:
Pertama, Anda menyalin
/etc/mysql/mysql.conf.d/mysqld.cnf
file dan melewati ke/etc/mysql/my.cnf
.Anda dapat melakukannya dengan perintah:
Sekarang mari Istirahatkan kata sandi:
Gunakan perintah berikut di terminal Anda:
Sekarang Anda berada di dalam konsol mysql.
Kemudian mari kita menulis beberapa pertanyaan untuk mereset kata sandi root kami
Sekarang kita bisa bersih-bersih
/etc/mysql/my.cng
Buka file di atas di editor Anda dan hapus seluruh baris di dalam file.
Setelah itu mari kita mulai kembali mysql:
Sekarang mari kita gunakan mysql dengan kata sandi yang baru dibuat:
Terakhir, masukkan kata sandi Anda yang baru dibuat.
sumber
Saya menemukan solusi saya setelah jam penelitian di sini.
Hentikan MySQL
Buat direktori layanan MySQL.
Berikan izin pengguna MySQL untuk menulis ke direktori layanan.
Mulai MySQL secara manual, tanpa izin pemeriksaan atau jaringan.
Masuk tanpa kata sandi.
perbarui kata sandi
Matikan MySQL.
Mulai layanan MySQL secara normal.
sumber
Anda ingin mengakses MySQL dengan pengguna root tetapi Anda tidak memberikan kata sandi root yang benar.
Jika Anda perlu menetapkan kata sandi baru untuk root , situs MySQL memiliki dokumentasi yang bagus tentang bagaimana melakukannya: http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html
Saya tidak akan menunjukkan prosesnya di sini karena dokumentasi MySql pada tautan di atas jelas dan ringkas .
sumber
os: Ubuntu18.04
mysql: 5.7
tambahkan
skip-grant-tables
ke akhir file mysqld.cnfcp my.cnf
skip-grant-tables
dari my.cnfvalidate_password
perhatikan Anda harus tahu bahwa kesalahan Anda disebabkan oleh apa? validate_password_policy?
Anda harus memutuskan untuk mereset kata sandi Anda untuk mengisi kebijakan atau mengubah kebijakan.
sumber
Ini telah terjadi pada saya juga. Masalahnya adalah dengan repo mysql yang sudah ada dengan distro linux. Jadi, ketika Anda melakukannya:
$ sudo apt install mysql-server
menginstal mysql dari repo default mereka yang memberikan masalah ini. Jadi untuk mengatasinya Anda perlu menghapus instalan yang diinstal mysql$ sudo apt remove mysql* --purge --auto-remove
Kemudian unduh mysql repo dari situs web mysql resmi MySQL APT Repo Ikuti dokumentasi mereka tentang cara menambahkan repo dan menginstalnya. Ini tidak memberikan masalah. Juga seperti dijawab oleh @zetacu, Anda dapat memverifikasi bahwa root mysql sekarang memang menggunakan plugin mysql_native_password
sumber
dalam hal ini,
Saya yakin kata sandi saya benar kalau tidak kode kesalahan akan
ERROR 1045 (28000): Access denied for user
jadi saya relogin menggunakan sudo,
kali ini berhasil untukku. lihat dokumen
dan kemudian ubah kata sandi root,
kemudian restart server menggunakan
sudo /etc/init.d/mysql restart
sumber