Akses MySQL ditolak untuk pengguna 'root' @ 'localhost'

24

Di server saya, setiap kali saya mencoba mengakses MySQL saya mendapatkan kesalahan:

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

ketika saya mencoba mysqladmin -u root -p passwordsaya dapatkan

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

Bagaimana saya bisa mengakses MySQL di server Ubuntu saya 12,04?

pengguna253867
sumber
1
Cobalah untuk menghindari mengetik kata sandi Anda sebagai parameter pada baris perintah, pengguna lain dapat menemukannya melalui daftar proses. Jauh lebih baik mengetiknya langsung ke program atau menggunakan kunci
Amias
Sintaksnya -p passwordsalah, itu harus -ppasswordtetapi tidak dianjurkan. Info lebih lanjut: stackoverflow.com/questions/5131931/...
Melebius
Periksa halaman ini untuk kemungkinan penyebab kesalahan ini dan solusinya untuk memperbaiki kesalahan ini. rathishkumar.in/2017/04/… . Ini dapat membantu Anda.
rathishDBA

Jawaban:

12

Jika Anda menjalankan n localhost, ketikkan perintah di bawah ini di terminal:

mysql -u root -p

Jika Anda menggunakan server eksternal, masukkan IP host (xxx.xxx.xxx.xxx) juga:

mysql -hxxx.xxx.xxx.xxx -uroot -p

Anda akan diminta kata sandi, masukkan dan Anda akan dapat mengakses prompt MySQL Anda.

Anda juga dapat melihat jawaban ini tentang cara mengatur ulang kata sandi MySQL Anda.

Parto
sumber
saya masuk tetapi saya masih tidak tahu bagaimana mengubah atau memilih kata sandi
user253867
Di jawaban yang saya tautkan, Anda harus mengganti 5.xdi bagian akhir dengan versi server MySQL yang Anda gunakan. Saya menggunakan 5.5 jadi perintah saya adalahsudo dpkg-reconfigure mysql-server-5.5
Parto
9
jadi, masalahnya adalah OP melihat Access denied for user 'root'@'localhost'. Anda menyarankan untuk menelepon mysql -u root -p. Hasil dari perintah ini adalah: Access denied for user 'root'@'localhost'.
phil294
5
sudo mysql -u root -pbekerja untuk saya, tetapi mysql -u root -ptidak
Ivan Black
7

Saya mendapatkan gejala yang sama ketika saya memperbarui, tetapi bagi saya perbaikannya (setelah membunuh mysql dan memulai kembali dengan --skip-grant-tables untuk masuk) adalah untuk mengeksekusi

update mysql.user set plugin = '';

Proses pembaruan suka mengatur kolom ini menjadi "unix_socket". Saya tidak tahu apa yang seharusnya dicapai, tetapi bagi saya itu merusak segalanya.

dogtato
sumber
Ini menyelesaikan masalah saya di Ubuntu 16 LTS, setelah mencoba semuanya .. izin, grup pengguna. Terima kasih.
onalbi
ya, saya telah menjalankan skrip pengerasan dan itu mengubah plugin mysql_socketsehingga apa pun yang saya setel untuk digunakan PASSWORD('xxxxxx'), tidak berfungsi.
TheVillageIdiot
4

Tetapkan kata sandi untuk mysql

sudo dpkg-reconfigure mysql-server-5.x

Sekarang buka terminal dan ketik

mysql -uroot -p

berikan kata sandi dan tekan enter

Conor
sumber
4

Saya memecahkan masalah saya dengan ini:

sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt install mysql-server

Menjadi sangat bertanggung jawab. Dengan solusi ini, Anda menghapus server MySql dan semua datanya.

Andrew Zolotarev
sumber
Tidak bekerja untuk saya.
Ivan Black
!! Menjadi sangat bertanggung jawab. Dengan solusi ini Anda menghapus server MySql dan semua datanya.
Matiss Jurgelis
4

Sama seperti Ulrich Metzger, setelah memutakhirkan mesin saya ke Ubuntu 16.04 dan Mysql-server-5.7, saya tidak bisa login dengan root karena pluginkolomnya berubah.

Masalah saya tidak terpecahkan dengan sudo dpkg-reconfigure mysql-server-5.7+ menghapus + membersihkan + membersihkan.

Saya harus menghentikan layanan mysql:

# sudo service mysql stop

Kemudian restart daemon mysql dengan --no-grant-tablesopsi:

# sudo mysqld_safe --no-grant-tables &

Kemudian di terminal lain, masukkan konsol mysql (yang sekarang tidak perlu otentikasi) dengan perintah mysql, dan perbarui kolom kata sandi dan plugin melalui SQL UPDATE:

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

Akhirnya, bunuh mysqld_safeperintah, restart layanan mysql dan sambungkan ke mysql secara normal:

# sudo service mysql start
# mysql
Kuuak
sumber
2

Setelah memutakhirkan dari ubuntu 14.4LTS ke 16.4LTS, pengguna root mysql tidak dapat lagi login karena entri yang salah di kolom plugin tabel pengguna mysql. Pembaruan menetapkan nilai plugin untuk pengguna root @ localhost ke auth_socket tetapi entri yang benar harus mysql_native_password , jika Anda menggunakan enkripsi kata sandi asli mysql sebelumnya.

Ulrich Metzger
sumber
Ini yang berhasil bagi saya, dan tampaknya menjadi akar masalahnya. Menghapus dan menginstal ulang tidak akan melakukan apa pun untuk memperbaiki "masalah".
SteveFrom Menghitung