Akses ditolak untuk 'root @ localhost' pengguna (menggunakan kata sandi: TIDAK)

115

Saya baru mengenal MySQL, saya mencoba menjalankan WordPress di desktop Windows saya dan memerlukan MySQL.

Saya menginstal semua Web Platform Installeryang disediakan oleh Microsoft. Saya tidak pernah menetapkan kata sandi root untuk MySQL dan pada langkah terakhir menginstal WordPress, ia meminta kata sandi server MySQL.

Apa kata sandi default untuk root (jika ada) dan bagaimana cara mengubahnya?

Saya mencoba:

mysql -u root password '123'

Tapi itu menunjukkan kepada saya:

Access denied for user 'root@localhost' (using password:NO)

Setelah ini saya coba:

mysql -u root -p

Namun, ia meminta kata sandi yang tidak saya miliki.


Pembaruan : seperti yang disarankan Bozho, saya melakukan hal berikut:

  1. Saya menghentikan Layanan MySQL dari layanan Windows
  2. CMD dibuka
  3. Mengubah lokasi menjadi c: \ program files \ mysql \ bin
  4. Menjalankan perintah di bawah ini

    mysqld --defaults-file="C:\\program files\\mysql\\mysql server 5.1\\my.ini" --init-files=C:\\root.txt

  5. Perintah berjalan dengan peringatan tentang kumpulan karakter yang saya sebutkan di bawah ini

  6. Saya memulai layanan MySQL dari layanan Windows
  7. Saya menulis di baris perintah

    mysql -u root -p EnterPassword: 123 // 123 was the password

  8. Baris perintah menunjukkan kesalahan berikut

    Access denied for user 'root@localhost' (using password:**YES**)

Bagaimana cara mengatasi ini? Saya menunggu kabar dari Anda.

Nasser Hadjloo
sumber
1
Perintah pertama salah, seharusnya -patau --password, tetapi tidak password. Itu sebabnya mysql merespon dengan MENGGUNAKAN PASSWORD NO.
Konerak
3
Sepertinya tidak ada yang memberinya jawaban yang jelas. Kata sandi untuk id rootpengguna kosong setelah penginstalan awal. Jadi lakukan saja mysql -u root -plalu tekan enter, yaitu biarkan kata sandi kosong. Kemudian tentu saja memasukkan kata sandi pada rootuserid.
RiggsFolly
1
@RiggsFolly tidak, tidak bekerja! kata sandi kosong memberi saya akses ditolak!
J86
Saya ingin menambahkan komentar karena saya tidak yakin jawaban yang diterima adalah yang benar. Bagi saya mengetik mysql -u root -p dan kemudian setelah meminta kata sandi, berikan yang benar (satu set saat instalasi) berfungsi. Alih-alih membuktikan nama DB ke -p dengan DB yang saya tahu ada tidak berhasil.
Carmine Tambascia

Jawaban:

48

Anda dapat mengatur ulang kata sandi root Anda . Ingatlah bahwa tidak disarankan menggunakan root tanpa kata sandi.

Bozho
sumber
@ Bozho - Saya mengikuti instruksi dan membuat file teks dan memanggilnya dari perintah yang disebutkan, setelah itu saya hadapi 100608 [warning] --default-character-set is deprecated and will be removed in a future release. please use --character-set-server instead.------------------------ -------- dan akhirnya ketika saya memulai layanan mysql saya lagi saya menghadapi kesalahan yang tepat tetapi kali ini dengan (using password:yes)apa yang harus saya lakukan?
Nasser Hadjloo
@Bozo - Perhatikan bahwa saya tidak dapat menjalankan perintah Anda dengan mysqldt-ntsaya menjalankannya dengan mysqldt -ntSebenarnya yang pertama tidak dapat dikenali untuk cmd. Saya menunggu kabar dari Anda.
Nasser Hadjloo
@ Bozho - Saya telah memperbarui pertanyaan saya dengan bug. Terima kasih atas waktu Anda.
Nasser Hadjloo
@ Bozho - apakah ada cara untuk memperbarui / menyesuaikan kesalahan mysql saya? ** Perbarui "Akses ditolak untuk pengguna 'root @ localhost' (menggunakan kata sandi: TIDAK)" menjadi "Akses ditolak untuk pengguna 'myname @ localhost' (menggunakan kata sandi: NO)" **
Hitesh
81

untuk jenis kesalahan ini; Anda hanya perlu menyetel kata sandi baru untuk pengguna root sebagai admin. ikuti langkah-langkahnya sebagai berikut:

[root ~]# mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password:NO)
  1. Hentikan service / daemon mysql yang sedang berjalan

    [root ~]# service mysql stop   
    mysql stop/waiting
  2. Mulai mysql tanpa hak istimewa menggunakan opsi berikut; Opsi ini digunakan untuk boot dan tidak menggunakan sistem privilege MySQL.

    [root ~]# mysqld_safe --skip-grant-tables &

Saat ini, terminal sepertinya akan berhenti . Biarkan saja, dan gunakan terminal baru untuk langkah selanjutnya.

  1. masuk ke prompt perintah mysql

    [root ~]# mysql -u root
    mysql> 
  2. Perbaiki pengaturan izin pengguna root;

    mysql> use mysql;
    Database changed
    mysql> select * from  user;
    Empty set (0.00 sec)
    mysql> truncate table user;
    Query OK, 0 rows affected (0.00 sec)
    mysql> flush privileges;
    Query OK, 0 rows affected (0.01 sec)
    mysql> grant all privileges on *.* to root@localhost identified by 'YourNewPassword' with grant option;
    Query OK, 0 rows affected (0.01 sec)

* Jika Anda tidak menginginkan kata sandi atau lebih tepatnya kata sandi kosong

    mysql> grant all privileges on *.* to root@localhost identified by '' with grant option;
    Query OK, 0 rows affected (0.01 sec)*
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)

Konfirmasikan hasilnya:

    mysql> select host, user from user;
+-----------+------+
| host      | user |
+-----------+------+
| localhost | root |
+-----------+------+
1 row in set (0.00 sec)
  1. Keluar dari shell dan restart mysql dalam mode normal.

    mysql> quit;
    [root ~]# kill -KILL [PID of mysqld_safe]
    [root ~]# kill -KILL [PID of mysqld]
    [root ~]# service mysql start
  2. Sekarang Anda berhasil masuk sebagai pengguna root dengan kata sandi yang Anda tetapkan

     [root ~]# mysql -u root -pYourNewPassword 
     mysql> 
pengguna2977819
sumber
2
Tekan Enter setelah "[root ~] # mysqld_safe --skip-grant-tables &" dan buka terminal lain untuk memasukkan "[root ~] # mysql -u root"
Liuda
saya menemui masalah ini, dan saya melakukannya banyak, lupakan saja restart layanan db ... banyak terima kasih!
Bruce Lee
3
Pada langkah 3, saya mendapatkanERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
MrMartin
4
@MrMartin, buat direktori itu sudo mkdir -p /var/run/mysqlddan berikan izin padanyasudo chown mysql:mysql /var/run/mysqld
niceday
ini adalah jawaban yang sangat membantu saya!
Jones G
17

1) Anda dapat mengatur kata sandi root dengan menjalankan konsol MySQL. Itu terletak di

C:\wamp\bin\mysql\mysql5.1.53\bin secara default.

Masuk ke direktori dan ketik MySQL. kemudian atur kata sandi sebagai berikut ..

    > SET PASSWORD FOR root@localhost = PASSWORD('new-password');

2) Anda dapat mengkonfigurasi aplikasi phpmyadmin wamp untuk pengguna root dengan mengedit

C:\wamp\apps\phpmyadmin3.3.9\config.inc.php 

Catatan: - jika Anda menggunakan xampp maka, file akan ditempatkan di

C:\xampp\phpMyadmin\config.inc.php

Ini terlihat seperti ini:

        $cfg['Servers'][$i]['verbose'] = 'localhost';
        $cfg['Servers'][$i]['host'] = 'localhost';
        $cfg['Servers'][$i]['port'] = '';
        $cfg['Servers'][$i]['socket'] = '';
        $cfg['Servers'][$i]['connect_type'] = 'tcp';
        $cfg['Servers'][$i]['extension'] = 'mysqli';
        $cfg['Servers'][$i]['auth_type'] = 'config';
        $cfg['Servers'][$i]['user'] = 'root';
        $cfg['Servers'][$i]['password'] = 'YOURPASSWORD';
        $cfg['Servers'][$i]['AllowNoPassword'] = false;

Kesalahan "Akses ditolak untuk pengguna 'root @ localhost' (menggunakan kata sandi: NO)" akan diselesaikan ketika Anda menyetel $cfg['Servers'][$i]['AllowNoPassword']ke false

Jika sebelumnya Anda mengubah kata sandi untuk 'root @ localhost', maka Anda harus melakukan 2 hal untuk mengatasi kesalahan "Akses ditolak untuk pengguna 'root @ localhost'":

  1. jika ['password'] memiliki tanda kutip kosong seperti '' maka letakkan kata sandi Anda di antara tanda kutip.
  2. ubah (menggunakan kata sandi: TIDAK) menjadi (menggunakan kata sandi: YES)

Ini akan mengatasi kesalahan tersebut.

Catatan: phpmyadmin adalah alat terpisah yang dilengkapi dengan wamp. Ini hanya menyediakan antarmuka ke MySQL. jika Anda mengubah kata sandi root sql saya, maka Anda harus mengubah konfigurasi phpmyadmin. Biasanya phpmyadmin dikonfigurasi untuk pengguna root.

burung kuning
sumber
tidak, Anda tidak bisa .. mysql tidak akan mulai: c: \ wamp64 \ bin \ mysql \ mysql5.7.23 \ bin> mysql ERROR 1045 (28000): Akses ditolak untuk pengguna 'ODBC' @ 'localhost' (menggunakan kata sandi: NO)
Jaxx0rr
9

Saya mendapatkan kesalahan yang sama pada kapten OS X El. Mysql versi 5.7.0 Saya dapat terhubung ke mysql dengan root setelah menjalankan langkah-langkah ini.

Hentikan server mysql

sudo mysql.server stop

Mulai mysql dalam mode aman

sudo mysqld_safe --skip-grant-tables

Menggunakan mysqld, Ubah database ke mysql dan perbarui detail untuk 'root' pengguna.

show databases;
use mysql;
UPDATE mysql.user 
    SET authentication_string = PASSWORD('MyNewPass'), password_expired = 'N'
    WHERE User = 'root' AND Host = 'localhost';
exit;

Setelah itu matikan proses 'mysqld_safe' dan mulai mysql secara normal. Anda harus bisa masuk ke mysql menggunakan root dan kata sandi baru. Dokumen SQL untuk detail selengkapnya

Sushantkumar M
sumber
4

Cukup edit my.inifile di jalur C: \ xampp \ mysql \ bin. Tambahkan saja:

skip-grant-tables

baris di antara baris # The MySQL server [mysqld]dan port=3306. Kemudian restart server MySQL.

Seperti:

Screenshot

Ryan Oscar
sumber
Ketika saya melakukan ini, saya mendapatkan kesalahan laincommunications link failure
Ahmed Hussein
3

Pastikan layanan MySQL berjalan di mesin Anda, kemudian ikuti instruksi dari MySQL untuk pertama kali mengatur root (cari 'windows' dan itu akan membawa Anda ke langkah-langkah untuk mengatur root):

http://dev.mysql.com/doc/refman/5.1/en/default-privileges.html

sholsapp
sumber
Solusi ini tidak akan berfungsi untuk saya karena saya tidak memiliki kata sandi yang diperlukan di langkah kedua.
Nasser Hadjloo
Inilah yang saya lihat ketika saya mengirim tautan, apakah Anda yakin ini tidak berfungsi? Saya tidak melihat referensi apa pun ke kata sandi lama. Untuk Windows, lakukan ini: shell> mysql -u root mysql> SET PASSWORD FOR 'root' @ 'localhost' = PASSWORD ('newpwd'); mysql> SET PASSWORD UNTUK 'root'@'127.0.0.1' = PASSWORD ('newpwd'); mysql> SET PASSWORD UNTUK 'root' @ '%' = PASSWORD ('newpwd');
sholsapp
1
Seperti yang saya katakan sebelumnya ketika saya menulis mysql -u rootsaya menghadapi masalah dan saya tidak bisa login ke mysql untuk menjalankan baris kedua. jadi Bagaimana cara menggunakan perintah ini?
Nasser Hadjloo
3

Gunakan mysql -u root -p Ini akan meminta kata sandi, masukkan kata sandi dan enter.

Vikash Kumar
sumber
Ini berfungsi setelah saya mendapatkan Akses ditolak untuk pengguna.
Shawn W
2

Solusi lain jika seseorang mendapatkan kesalahan Kata sandi yang ditentukan untuk akun pengguna 'root' tidak valid, atau gagal terhubung ke server database juga dengan kata sandi yang benar, adalah sebagai berikut

• Di registri Windows, hapus kunci reg mysql_pwd di bawah HKCU \ Software \ Microsoft \ WebPlatformInstaller

• Hapus versi konektor MySQL .NET yang lebih lama

• Unduh dan instal Konektor MySql .NET terbaru .

Silverstorm
sumber
Memeriksa kata sandi dan nama basis data berhasil untuk saya .. +1
Abhinav Dobhal
2

Untuk MySQL 5.7. Ini adalah langkah-langkah di bawah ini:

Hentikan server MySQL Anda sepenuhnya. Ini dapat dilakukan dengan mengakses jendela Layanan di dalam Windows XP dan Windows Server 2003, tempat Anda dapat menghentikan layanan MySQL.

Buka prompt perintah MS-DOS Anda menggunakan "cmd" di dalam jendela Jalankan. Di dalamnya arahkan ke folder bin MySQL Anda, seperti C: \ MySQL \ bin menggunakan perintah cd.

Jalankan perintah berikut di prompt perintah: mysqld.exe -u root --skip-grant-tables

Biarkan prompt perintah MS-DOS seperti apa adanya, dan buka jendela prompt perintah MS-DOS yang baru.

Arahkan ke folder MySQL bin Anda, seperti C: \ MySQL \ bin menggunakan perintah cd.

Masukkan mysql dan tekan enter.

Anda sekarang harus memiliki prompt perintah MySQL yang berfungsi. Ketik use mysql; sehingga kita beralih ke database "mysql".

Jalankan perintah berikut untuk memperbarui kata sandi:

perbarui set pengguna otentikasi_string = kata sandi ('1111') di mana pengguna = 'root';

Katie
sumber
1

Dalam kode Anda, ganti 'root' dengan nama pengguna dan kata sandi Server dengan kata sandi server Anda. Misalnya jika Anda memiliki DB dan file php Anda di server http://www.example.com maka jelas Anda harus masuk ke situs server ini menggunakan nama pengguna dan kata sandi Anda.

Pir Fahim Shah
sumber
1

Jika Anda menggunakan XAMPP, buka C:\xampp\phpMyAdminlalu buka baris config.inc.phppencarian $cfg['Servers'][$i]['password'] = ''dan masukkan kata sandi Anda di sana.

Ajay Rawat
sumber
1

Untuk beberapa informasi, saya mendapatkan kesalahan setelah mengubah kata sandi:

Akses ditolak untuk 'root' @ 'localhost' pengguna (menggunakan kata sandi: TIDAK)

Akses ditolak untuk 'root' @ 'localhost' pengguna (menggunakan kata sandi: YA)

Dalam kedua kasus tersebut, ada kesalahan.

Tapi masalahnya setelah itu saya sudah mencobanya

mysql -uroot -ppassword dari pada

mysql -u root -p password -> dengan spasi antara -uroot dan -ppassword jadi mungkin jika ada yang mendapat masalah bisa mencoba cara ini.

profiile_samir
sumber
0

Beberapa kali itu terjadi begitu saja karena pemasangan Wamp atau perubahan opsi kata sandi pengguna root. Seseorang dapat menggunakan hak istimewa -> root (pengguna) dan kemudian setel opsi kata sandi ke TIDAK untuk menjalankan hal-hal tanpa kata sandi ATAU mengatur kata sandi dan menggunakannya dalam aplikasi.

Sayyad
sumber
0
  1. Ubah kata sandi dari config.inc.phpsekarang di C:\xampp\phpMyAdmin.
  2. Ketik mysql -u root -pprompt perintah.
  3. Anda akan diminta memasukkan kata sandi. Masukkan kata sandi yang Anda perbarui di config.inc.php.
pengguna12682744
sumber
0

jika Anda mengubah porta menjadi non standar, maka Anda perlu menentukannya:

$ connection = mysqli_connect ('localhost: 3308', 'root', '', 'loginapp');

Mitch
sumber
-3
mysqladmin -u root -p password

Masukkan current password

kemudian

Masukkan new password

djrconcepts
sumber
1
Intinya adalah OP tidak mengetahui kata sandi saat ini, karena tidak pernah disetel .
Nateowami
Saya tahu kata sandi saya tetapi bermasalah dengan login dengan kata sandi sementara. jawaban ini berhasil untuk saya
Bernard