$ ./mysqladmin -u root -p 'redacted' Masukkan password:
mysqladmin: terhubung ke server di 'localhost' gagal error: 'Akses ditolak untuk pengguna 'root'@'localhost' (using password: YES)'
Bagaimana saya bisa memperbaiki ini?
Semua solusi yang saya temukan yang jauh lebih kompleks dari yang diperlukan dan tidak bekerja untuk saya. Berikut ini adalah solusi yang memecahkan masalah saya. Tidak perlu untuk me-restart mysqld atau mulai dengan hak-hak istimewa.
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
Dengan satu query kita mengubah auth_plugin untuk mysql_native_password dan setting password root untuk root *** (merasa bebas untuk perubahan dalam permintaan)*
Sekarang anda harus dapat login dengan root. Informasi lebih lanjut dapat ditemukan di mysql dokumentasi
(keluar mysql console dengan Ctrl + D atau dengan mengetik exit)
/etc/my.cnf
atau /etc/mysql/my.cnf
, tergantung pada distro anda.skip-grant-tables
di bawah [mysqld]
mysql -u root -p
ALTER USER 'root'@'localhost' DIIDENTIFIKASI DENGAN 'NewPassword';
mysql -u root -p
Saya mencoba banyak langkah-langkah untuk mendapatkan masalah ini diperbaiki. Ada begitu banyak sumber-sumber untuk solusi yang mungkin untuk masalah ini yang lebih keras untuk menyaring omong kosong. Akhirnya saya menemukan sebuah solusi yang baik di sini:
Langkah 1: Mengidentifikasi Database Versi
$ mysql --version
Anda'll melihat beberapa output sama dengan MySQL:
$ mysql Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using EditLine wrapper
Atau output seperti ini untuk MariaDB:
mysql Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1
Membuat catatan dari database yang dan versi yang anda'kembali berjalan, seperti yang anda'll menggunakan mereka nanti. Selanjutnya, anda perlu untuk menghentikan database sehingga anda dapat mengaksesnya secara manual.
Langkah 2: Menghentikan Database Server
Untuk mengubah password root, anda harus mematikan database server terlebih dahulu.
Anda dapat melakukan itu untuk MySQL dengan:
$ sudo systemctl stop mysql
Dan untuk MariaDB dengan:
$ sudo systemctl stop mariadb
Langkah 3: Restart Database Server Tanpa Izin Pemeriksaan
Jika anda menjalankan MySQL dan MariaDB tanpa memuat informasi mengenai hak pengguna, itu akan memungkinkan anda untuk mengakses database baris perintah dengan hak akses root tanpa memberikan password. Ini akan memungkinkan anda untuk mendapatkan akses ke database tanpa menyadarinya.
Untuk melakukan ini, anda perlu untuk menghentikan database dari loading tabel hibah, yang menyimpan user privilege informasi. Karena ini adalah sedikit dari risiko keamanan, anda juga harus melewati jaringan dan juga untuk mencegah klien lain dari menghubungkan.
Mulai database tanpa loading tabel hibah atau mengaktifkan jaringan:
$ sudo mysqld_safe --skip-grant-tables --skip-networking &
Ampersand pada akhir perintah ini akan membuat proses ini berjalan di latar belakang sehingga anda dapat terus menggunakan terminal anda.
Sekarang anda dapat terhubung ke database sebagai user root, yang seharusnya tidak meminta password.
$ mysql -u root
Anda'll segera melihat database shell prompt sebagai gantinya.
MySQL Prompt
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
MariaDB Prompt
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
Sekarang bahwa anda memiliki akses root, anda dapat mengubah password root.
Langkah 4: Mengubah Password Root
mysql> FLUSH PRIVILEGES;
Sekarang kita benar-benar dapat mengubah password root.
Untuk MySQL 5.7.6 dan yang lebih baru serta MariaDB 10.1.20 dan yang lebih baru, gunakan perintah berikut:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Untuk MySQL 5.7.5 dan lebih tua serta MariaDB 10.1.20 dan lebih tua, gunakan:
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
Pastikan untuk mengganti new_password
dengan password baru anda pilihan.
Catatan: Jika ALTER USER
perintah doesn't bekerja, it's biasanya merupakan indikasi dari masalah yang lebih besar. Namun, anda dapat mencoba UPDATE ... SET
untuk me-reset password root sebaliknya.
[PENTING] Ini adalah satu-baris tertentu yang tetap saya masalah khusus:
mysql> UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost';
Ingat untuk reload tabel hibah setelah ini.
Dalam kedua kasus, anda akan melihat konfirmasi bahwa perintah telah berhasil dijalankan.
Query OK, 0 rows affected (0.00 sec)
Password telah berubah, sehingga sekarang anda dapat menghentikan manual instance dari database server dan restart seperti itu sebelumnya.
Langkah 5: Restart Database Server Biasanya
Tutorial masuk ke beberapa langkah-langkah lebih lanjut untuk me-restart database, tetapi hanya bagian yang saya gunakan adalah ini:
Untuk MySQL, menggunakan: $ sudo systemctl start mysql
Untuk MariaDB, menggunakan:
$ sudo systemctl start mariadb
Sekarang anda dapat konfirmasi bahwa password baru yang telah diterapkan dengan benar dengan menjalankan:
$ mysql -u root -p
Perintah harus sekarang prompt untuk yang baru ditetapkan password. Masuk ke dalamnya, dan anda harus mendapatkan akses ke database prompt seperti yang diharapkan.
Kesimpulan
Anda sekarang memiliki akses administratif ke MySQL atau MariaDB server dipulihkan. Pastikan new password root yang anda pilih adalah yang kuat dan aman, dan menyimpannya di tempat yang aman.
Jalankan perintah berikut untuk menghubungkan sebagai root
(tanpa password)
sudo /usr/bin/mysql --defaults-file=/etc/mysql/debian.cnf
Jika anda don't ingin menambahkan --default-file
setiap kali anda ingin terhubung sebagai root
, anda dapat menyalin /etc/mysql/debian.cnf
ke direktori home anda:
sudo cp /etc/mysql/debian.cnf ~/.my.cnf
dan kemudian:
sudo mysql
Untuk pengguna linux ini bisa menjadi tugas yang menakutkan. Biar update ini dengan mysql 8(versi terbaru yang tersedia saat ini adalah 8.0.12 seperti pada 12-Sep-2018)
Yang's ini.
Setelah mencoba semua jawaban orang lain, hal ini yang akhirnya bekerja untuk saya
sudo mysql -- It does not ask me for any password
-- Then in MariaDB/MySQL console:
update mysql.user set plugin = 'mysql_native_password' where User='root';
FLUSH PRIVILEGES;
exit;
Saya menemukan jawabannya di artikel ini : https://medium.com/@chiragpatel_52497/solved-error-access-denied-for-user-root-localhost-of-mysql-programming-school-6e3611838d06
Tidak ada jawaban atas membantu saya dengan masalah ini, sehingga di sini's solusi saya menemukan.
Bagian yang relevan:
Di sistem Ubuntu menjalankan MySQL 5.7 (dan versi yang lebih baru), akar pengguna MySQL diatur untuk mengotentikasi menggunakan auth_socket plugin secara default daripada dengan password. Hal ini memungkinkan untuk beberapa keamanan yang lebih besar dan kegunaan dalam banyak kasus, tetapi hal ini juga dapat mempersulit hal-hal ketika anda perlu untuk memungkinkan program eksternal (misalnya, phpMyAdmin) untuk akses pengguna.
Dalam rangka untuk menggunakan password untuk connect ke MySQL sebagai root, anda akan perlu untuk beralih metode otentikasi dari auth_socket untuk mysql_native_password. Untuk melakukan hal ini, membuka prompt MySQL dari terminal anda:
sudo mysql
Berikutnya, memeriksa metode otentikasi setiap account pengguna MySQL dengan menggunakan perintah berikut:
PILIH pengguna,authentication_string,plugin,host DARI mysql.pengguna;
Output
+------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | | auth_socket | localhost | | mysql.sesi | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 4 rows in set (0.00 sec)
Dalam contoh ini, anda dapat melihat bahwa user root tidak sebenarnya mengotentikasi menggunakan auth_socket plugin. Untuk mengkonfigurasi account root untuk melakukan otentikasi dengan password, jalankan perintah berikut MENGUBAH perintah PENGGUNA. Pastikan untuk mengubah password untuk password yang kuat yang anda pilih, dan perhatikan bahwa perintah ini akan mengubah password root yang anda tetapkan di Langkah 2:
ALTER USER 'root'@'localhost' DIIDENTIFIKASI DENGAN mysql_native_password OLEH 'kata';
Kemudian, jalankan FLUSH PRIVILEGES yang memberitahu server untuk reload tabel hibah dan menempatkan perubahan baru berlaku:
FLUSH PRIVILEGES;
Memeriksa metode otentikasi yang digunakan oleh setiap pengguna lagi untuk mengkonfirmasi bahwa akar tidak lagi mengotentikasi menggunakan auth_socket plugin:
PILIH pengguna,authentication_string,plugin,host DARI mysql.pengguna;
Output
+------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost | | mysql.sesi | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 4 rows in set (0.00 sec)
Anda dapat lihat pada contoh ini output yang akar pengguna MySQL sekarang mengotentikasi menggunakan password. Setelah anda mengkonfirmasi hal ini pada server anda sendiri, anda dapat keluar dari MySQL shell:
keluar
Di MySQL workbench, anda dapat pergi ke sidebar kiri, di bawah Manajemen pilih "Pengguna dan Hak istimewa", klik root di bawah Account Pengguna, yang di bagian kanan, klik tab "Batas Akun" untuk meningkatkan max query, update, dll, dan kemudian klik tab "peran-Peran Administratif" dan centang kotak untuk memberikan akses akun. Harapan yang membantu!
Saya melakukan ini untuk menetapkan password root di awal mendirikan MySQL di OSx. Buka terminal.
sudo sh -c 'echo /usr/local/mysql/bin > /etc/paths.d/mysql'
Dekat terminal dan buka terminal baru. Dan berikut ini adalah bekerja di Linux, untuk mengatur password root.
sudo /usr/local/mysql/support-files/mysql.server stop
sudo mysqld_safe --skip-grant-tables
(sudo mysqld_safe --skip-grant-tables : Ini tidak bekerja untuk saya pada waktu dulu. Tapi coba kedua, adalah keberhasilan).
Kemudian login ke MySQL
mysql -u root
FLUSH PRIVILEGES;
Sekarang mengubah kata sandi:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
Restart MySQL:
sudo /usr/local/mysql/support-files/mysql.server stop
sudo /usr/local/mysql/support-files/mysql.server start
Oke, aku tahu ini adalah thread lama tapi jika anda mencapai halaman ini melalui Google seperti yang saya lakukan dan tidak ada solusi di atas bekerja, apa yang ternyata menjadi kesalahan adalah 100% kebodohan pada akhir saya. Aku didn't terhubung ke server. Setelah terhubung semuanya berjalan mulus.
Dalam hal ini membantu untuk mengetahui setup saya, saya'm menggunakan Sequel Pro dan mencoba untuk terhubung dengan Node menggunakan NPM paket, mysql. Aku't pikir saya perlu untuk benar-benar terhubung (selain menjalankan Sekuel Pro) karena yang saya lakukan bahwa aplikasi saya sudah.
Jika anda seperti saya dan semua saran di atas gagal, lanjutkan untuk uninstall semua versi dari mysql pada mesin anda, mencari semua yang tersisa mysql file menggunakan perintah sudo find / -name "mysql"
dan rm -rf
setiap file atau direktori dengan nama mysql yang terpasang untuk itu (anda harus melewatkan file yang berkaitan dengan bahasa pemrograman perpustakaan). Sekarang menginstal versi baru dari MySQL dan menikmati. NB: Anda akan kehilangan semua data anda sehingga anda menimbang pilihan pertama.