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

184

Saya seorang insinyur listrik yang terutama bermain-main dengan sistem tenaga alih-alih pemrograman. Baru-baru ini, saya telah mengikuti manual untuk menginstal suite perangkat lunak di Ubuntu. mySQLSebenarnya saya tidak memiliki pengetahuan sama sekali. Saya telah melakukan instalasi berikut di Ubuntu saya.

sudo apt-get update
sudo apt-get install mysql-server-5.5
sudo apt-get install mysql-client-5.5
sudo apt-get install mysql-common
sudo apt-get install glade
sudo apt-get install ntp

Lalu saya lakukan

me@ubuntu:~/Desktop/iPDC-v1.3.1/DBServer-1.1$ mysql -uroot -proot <"Db.sql"

Saya berakhir dengan pesan kesalahan berikut.

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Bagaimana saya memperbaikinya dan melanjutkan?

Sibbs Gambling
sumber
1
Ini sepertinya bukan pemrograman yang terkait dengan saya. Saya menandainya untuk migrasi ke SuperUser
Uli Köhler
Pengunjung masa depan, juga jangan lupa untuk memeriksa beberapa penyebab yang dijelaskan di sini: dev.mysql.com/doc/refman/8.0/en/problems-connecting.html
aderchox

Jawaban:

155

Catatan: Untuk MySQL 5.7+ silakan lihat jawaban dari @Lahiru untuk pertanyaan ini. Itu mengandung lebih banyak informasi terkini.

Untuk MySQL <5.7:

Kata sandi root default kosong (yaitu string kosong) tidak root. Jadi Anda bisa masuk sebagai:

mysql -u root

Anda jelas harus mengubah kata sandi root Anda setelah instalasi

mysqladmin -u root password [newpassword]

Dalam kebanyakan kasus, Anda juga harus mengatur akun pengguna individu sebelum bekerja secara luas dengan DB juga.

Mike Brant
sumber
5
@FarticlePilter -pBendera menentukan kata sandi, jadi setelah Anda mengubah kata sandi root, Anda akan menyukainya mysql -u root -p[newpassword]. The < [filename]adalah menggunakan input std untuk mengeksekusi file SQL di jalan yang diberikan melalui pengguna credential Anda berikan.
Mike Brant
27
Saya mencoba seperti yang diperintahkan mysqladmin -u root password abc1234, tetapi saya mendapatkannya mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: NO)'. Terima kasih banyak!
Sibbs Gambling
2
@ Kanagaroo dalam pertanyaan ini, OP menyatakan bahwa mereka baru saja menginstal MySQL untuk pertama kalinya dan kemudian mencoba mengakses melalui klien baris perintah MySQL. Kedengarannya seperti akses pertama kali ke saya.
Mike Brant
18
Sebenarnya untuk server komunitas mysql 5.7, kata sandi root default dihasilkan secara acak ketika Anda menginstal. Periksa /var/log/mysqld.log Anda untuk baris yang membicarakan "kata sandi sementara". Menghemat berjam-jam main-main.
Phil
1
@BraianMellor Ini memang memecahkan masalah untuk MySQL <5.7 karena kata sandi root (pascasstalasi) default pada Ubuntu kosong (tidak ada kata sandi), di mana dalam pertanyaan awal, poster mencoba menggunakan root / root. Pertanyaannya bukan tentang kehilangan kata sandi, mengubah kata sandi, atau sejenisnya. Untuk versi MySQL yang lebih baru, jawaban lain yang saya rujuk adalah jawaban yang benar, karena pengguna harus melihat log kesalahan untuk melihat kata sandi root yang dibuat secara acak.
Mike Brant
114

Saya bisa menyelesaikan masalah ini dengan menjalankan pernyataan ini

sudo dpkg-reconfigure mysql-server-5.5

Yang akan mengubah kata sandi root.

Divz
sumber
10
Hanya yang saya butuhkan ... tetapi tidak semua orang memiliki server versi 5.5. gunakan dpkg --get-selections | grep sqluntuk mendapatkan versi Anda
Balmipour
1
@Balmipour apa yang seharusnya menjadi perintah yang setara untuk memeriksa versi sql di Rhel 6.x
PrathamN
1
@ Divz apa yang harus menjadi perintah untuk mengkonfigurasi ulang server mysql di Rhel / centos
PrathamN
@RathamN Saya tidak pernah menggunakan red had, tetapi googling untuk "versi paket red hat check" memberi saya perintah seperti ini: yum list installedtambahkan | grep sqluntuk memfilter hanya paket SQL.
Balmipour
1
Ketika saya menjalankan perintah ini di Mac OS X, saya mendapatkan error ini: sudo: dpkg-reconfigure: command not found. Ada saran?
mOna
90

Anda harus mengatur ulang kata sandi! langkah-langkah untuk mac osx (diuji dan berfungsi) dan ubuntu

Hentikan penggunaan MySQL

sudo service mysql stop

atau

$ sudo /usr/local/mysql/support-files/mysql.server stop

Mulai dalam mode aman:

$ sudo mysqld_safe --skip-grant-tables --skip-networking

(baris di atas adalah seluruh perintah)

Ini akan menjadi perintah yang sedang berlangsung sampai proses selesai jadi buka jendela shell / terminal lain, masuk tanpa kata sandi:

$ mysql -u root

mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';

Sesuai komentar @ IberoMedia, untuk versi MySQL yang lebih baru, bidang ini disebut authentication_string:

mysql> UPDATE mysql.user SET authentication_string =PASSWORD('password') WHERE User='root';

Mulai MySQL menggunakan:

sudo service mysql start

atau

sudo /usr/local/mysql/support-files/mysql.server start

kata sandi baru Anda adalah 'kata sandi'.

tk_
sumber
3
Tolong, BUKAN seperti itu! Jawaban @ Divz lebih aman. Mengutip dokumen tentang --skip-grant-tables: Ini memungkinkan siapa saja untuk terhubung tanpa kata sandi dan dengan semua hak istimewa [...] Karena ini tidak aman, [...] digunakan --skip-grant-tablesbersamaan dengan --skip-networkinguntuk mencegah klien jarak jauh terhubung. oh, dan juga, yang ini tidak berhasil untuk saya. Itulah mengapa saya datang ke sini: p
Balmipour
1
Jika Anda pergi ke sana , ya. Itu tidak berhasil untuk saya, dan mengikuti jawaban @ Divz tampaknya lebih mudah bagi saya, lagi pula --Apa yang saya sarankan gunakan dpkg --get-selections | grep mysql-server-untuk mendapatkan versi MySQL Anda yang tepat, kemudian pergi untuk sudo dpkg-mengkonfigurasi ulang mysql-server-5.x (ganti 5 .x dengan versi server Anda, btw). Saya berkomentar jawaban @ Divz dengan presisi ini, tapi itu ditutupi oleh beberapa komentar "terima kasih".
Balmipour
4
perbarui set pengguna Authent_string = kata sandi ('1111') di mana pengguna = 'root';
Dejell
2
Ini benar-benar bekerja ... solusi lain masih memberi saya kesalahan yang sama.
eddy147
2
Sejak MySQL 5.7.6 kolom Kata sandi diganti namanya menjadi "authentication_string" Di sini Anda dapat membaca lebih lanjut tentang hal ini: bugs.mysql.com/bug.php?id=76655
IberoMedia
55

Saya tahu ini pertanyaan lama tetapi saya merasa ini mungkin membantu seseorang. Saya baru-baru ini dihadapkan dengan masalah yang sama tetapi dalam kasus saya, saya ingat kata sandi saya cukup baik tetapi terus memberi saya kesalahan yang sama. Saya mencoba banyak solusi tetapi tetap tidak ada yang membantu saya mencoba ini

mysql -u root -p 

setelah itu meminta Anda untuk kata sandi seperti ini

Enter password: 

dan kemudian saya mengetik kata sandi yang saya gunakan. Itu saja

XY-JOE
sumber
3
Lucu bahwa ini membantu setelah beberapa hari penelitian.
girish_vr
Senang tahu @ girish_vr
XY-JOE
Bekerja untukku! Versi mysql-server saya adalah: Versi server: 8.0.13 MySQL Community Server - GPL
kaspiotr
Yang ini membantu, yang sangat sangat bodoh di sisi MySQL sehingga saya masih tidak percaya.
wscourge
39

Pada permulaan permulaan server hal berikut terjadi, mengingat bahwa direktori data server kosong:

  • Server diinisialisasi.
  • Sertifikat SSL dan file kunci dihasilkan di direktori data.
  • Plugin validate_password diinstal dan diaktifkan.
  • Akun superuser 'root' @ 'localhost' dibuat. Kata sandi untuk superuser diatur dan disimpan dalam file log kesalahan.

Untuk mengungkapkannya, gunakan perintah berikut:

shell> sudo grep 'temporary password' /var/log/mysqld.log

Ganti kata sandi root sesegera mungkin dengan masuk dengan kata sandi sementara yang dibuat dan setel kata sandi khusus untuk akun pengguna super:

shell> mysql -u root -p #Login to root user with some password

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!'; 
Lahiru
sumber
16
Ini terlihat menjanjikan, tetapi tidak berhasil untuk saya. Ketika saya menjalankan sudo grep 'temporary password' /var/log/mysqld.logsaya mendapatkan/var/log/mysqld.log: No such file or directory
Eric Hepperle - CodeSlayer2010
4
Coba sudo grep 'temporary password' /var/log/mysql/error.log. Solusi @Lahiru bekerja untuk saya.
artemisian
17
Saya mencoba sudo grep 'kata sandi sementara' /var/log/mysql/error.log tetapi tidak mengembalikan apa pun.
pelajar
2
Coba shell> sudo grep 'password' /var/log/mysql/error.log. Bekerja untuk saya, tapi saya mengerti: root @ localhost dibuat dengan kata sandi kosong! Silakan pertimbangkan mematikan opsi --initialize-insecure. Versi mysql saya adalah: Ver 8.0.13 untuk Linux di x86_64 (MySQL Community Server - GPL)
kaspiotr
1
@ EnginYilmaz mengapa Anda menyarankan perintah mysql ketika masalahnya adalah bahwa mysql bahkan tidak dapat diakses?
R-obert
34

jika masalahnya masih ada, cobalah untuk memaksa mengubah celah

/etc/init.d/mysql stop

mysqld_safe --skip-grant-tables &

mysql -u root

Siapkan kata sandi baru pengguna root MySQL

use mysql;
update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
flush privileges;
quit;

Hentikan Server MySQL:

/etc/init.d/mysql stop

Mulai server MySQL dan uji:

mysql -u root -p
Yasin Hassanien
sumber
1
Terima kasih. ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)juga mengganggu server saya. 'mysqld_safe' juga gagal sampai saya melakukan 'killall mysqld' SETELAH Langkah Anda 1.
Marcos
Tolong, BUKAN seperti itu! Jawaban @ Divz lebih aman. Mengutip dokumen tentang --skip-grant-tables: Ini memungkinkan siapa saja untuk terhubung tanpa kata sandi dan dengan semua hak istimewa [...] Karena ini tidak aman, [...] digunakan --skip-grant-tablesbersamaan dengan --skip-networkinguntuk mencegah klien jarak jauh terhubung. oh, dan juga, yang ini tidak berhasil untuk saya. Itulah mengapa saya datang ke sini: p
Balmipour
2
Ini memberi saya: ERROR 1054 (42S22): 'Kata sandi' kolom tidak dikenal di 'daftar bidang'
MD. Mohiuddin Ahmed
Periksa jawaban oleh @Anshu itu cara yang lebih aman untuk menangani ini
Mugoma J. Okomba
1
@ MD.MohiuddinAhmed Anda harus menggunakan versi server mysql yang lebih baru. Lihat jawaban ini: stackoverflow.com/a/31122246/6242649
Udayraj Deshmukh
32

Itu terjadi ketika kata sandi Anda hilang.

Langkah-langkah untuk mengubah kata sandi ketika Anda lupa:

  1. Hentikan Server MySQL (di Linux):

    sudo systemctl stop mysql
  2. Mulai database tanpa memuat tabel hibah atau mengaktifkan jaringan:

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

    Ampersand di akhir perintah ini akan membuat proses ini berjalan di
    latar belakang sehingga Anda dapat terus menggunakan terminal Anda dan menjalankan #mysql -u root, itu tidak akan meminta kata sandi.

    Jika Anda mendapatkan kesalahan seperti di bawah ini:

    2018-02-12T08: 57: 39.826071Z Direktori mysqld_safe '/ var / run / mysqld' untuk
    file socket UNIX tidak ada. mysql -u root ERROR 2002 (HY000): Tidak dapat terhubung ke server MySQL lokal melalui soket
    '/var/run/mysqld/mysqld.sock' (2) [1] + Keluar 1

  3. Buat direktori layanan MySQL.

    sudo mkdir /var/run/mysqld

    Berikan izin pengguna MySQL untuk menulis ke direktori layanan.

    sudo chown mysql: /var/run/mysqld
  4. Jalankan perintah yang sama pada langkah 2 untuk menjalankan mysql di latar belakang.

  5. Jalankan mysql -u root Anda akan mendapatkan konsol mysql tanpa memasukkan kata sandi.

    Jalankan perintah ini

    FLUSH PRIVILEGES;

    Untuk MySQL 5.7.6 dan yang lebih baru

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

    Untuk MySQL 5.7.5 dan yang lebih lama

    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');

    Jika perintah ALTER USER tidak berfungsi gunakan:

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

Sekarang keluar

  1. Untuk menghentikan instance dimulai secara manual

    sudo kill `cat /var/run/mysqld/mysqld.pid`
  2. Mulai ulang mysql

    sudo systemctl start mysql
Sameer Kumar Choudhary
sumber
2
Dalam kasus saya, saya harus memodifikasi Langkah 6 sebagaisudo kill `sudo cat /var/run/mysqld/mysqld.pid`
kolunar
1
Ini yang bekerja untuk saya. Pada langkah 5, lakukan 1. gunakan USER 2. Untuk mengubah kata sandi gunakan -> perbarui set pengguna Authent_string = PASSWORD ("kata sandi") di mana Pengguna = 'root';
Bikram
1
Ini solusi terbaik, saya bisa mengetahuinya. Menggunakan "5.7.26 MySQL Community Server (GPL)" di macOS Mojave pada model MBP '15. Saya harus menghentikan Mysql dari System Preference, dan kemudian mengikuti langkah 2 dan langkah 5. Dan kemudian saya harus mematikan proses MySQL dengan mencari PID menggunakan ps -ef | grep mysql.
cspider
12

Saya menemukan masalah yang sangat menjengkelkan ini dan menemukan banyak jawaban yang tidak berhasil. Solusi terbaik yang saya temui adalah menghapus instalan mysql dan menginstalnya kembali. Pada menginstal ulang Anda menetapkan kata sandi root dan ini memperbaiki masalah.


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

Saya menemukan kode ini di tempat lain sehingga saya tidak mengambil kredit untuk itu. Tapi itu berhasil. Untuk menginstal mysql setelah menghapusnya saya pikir laut digital memiliki tutorial yang bagus tentang itu. Lihat intisari saya untuk ini.
https://gist.github.com/JamesDaniel/c02ef210c17c1dec82fc973cac484096

JamesD
sumber
12

Saya menggunakan Ubuntu-16.04: install mysql - 5.7. Saya memiliki masalah yang sama: Login ditolak untuk pengguna root.

Coba langkah-langkah di bawah ini:

  1. dpkg --get-selections | grep mysql (untuk mendapatkan versi mysql).

  2. dpkg-reconfigure mysql-server-5.7

  3. mysql -u root -p

Tanpa -p itu tidak meminta Anda untuk bertanya kata sandi. Setelah masuk, Anda dapat membuat pengguna dengan kata sandi dengan mengikuti langkah-langkah:

CREATE USER 'your_new_username'@'your-hostname' IDENTIFIED BY 'your-password';

GRANT ALL PRIVILEGES ON *.* to 'your_new_username'@'your-hostname' WITH GRANT OPTION;

Keluar dari root dan login dari yang Anda berikan di atas.

mysql -u <your_new_username> -p

Untuk beberapa alasan masih mengetik mysql tidak bekerja. SAMA SEKALI. Saya sarankan biasakan untuk menggunakannya mysql -u <name> -p.

Nikhil Rushmith
sumber
8

cukup masukkan terminal

mysql -u root -p. daripada itu akan meminta kata sandi kepada Anda

Vahap Gencdal
sumber
8

Jika tidak ada jawaban lain yang berfungsi untuk Anda, dan Anda menerima kesalahan ini:

mysqld_safe Logging to '/var/log/mysql/error.log'.
mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
[1]+  Exit 1                  sudo mysqld_safe --skip-grant-tables

Ikuti perintah di bawah ini langkah demi langkah hingga Anda mereset kata sandi Anda:

# Stop Your Server First
sudo service mysql stop

# Make MySQL service directory.
sudo mkdir /var/run/mysqld

# Give MySQL permission to work with the created directory
sudo chown mysql: /var/run/mysqld

# Start MySQL, without permission and network checking
sudo mysqld_safe --skip-grant-tables --skip-networking &

# Log in to your server without any password.
mysql -u root mysql


# Update the password for the root user:
UPDATE mysql.user SET authentication_string=PASSWORD('YourNewPasswordBuddy'), plugin='mysql_native_password' WHERE User='root' AND Host='localhost';

#if you omit (AND Host='localhost') section, it updates the root pass regardless of its host

FLUSH PRIVILEGES;
EXIT;

#kill mysqld_safe process
sudo service mysql restart

#Now you can use your new password to login to your Server
mysql -u root -p

#take note for remote access you should create a remote user and then grant all privileges to that remote user
Mehdi
sumber
Ini adalah jawaban yang benar untuk mysql 5.7 di Ubuntu 18.04 LTS juga. Terima kasih
Dhiraj
Untuk Semua Alamat Jarak Jauh: sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf -> bind-address = 0.0.0.0
Mehdi
7

Saya menginstal MySQL sebagai pengguna root ( $SUDO) dan mendapatkan masalah yang sama
Ini adalah bagaimana saya memperbaikinya-

  1. $ sudo cat /etc/mysql/debian.cnf

Ini akan menampilkan detail sebagai-

# Automatically generated for Debian scripts. DO NOT TOUCH! [client] host = localhost user = debian-sys-maint password = GUx0RblkD3sPhHL5 socket = /var/run/mysqld/mysqld.sock [mysql_upgrade] host = localhost user = debian-sys-maint password = GUx0RblkD3sPhHL5 socket = /var/run/mysqld/mysqld.sock

Di atas kita dapat melihat kata sandi hanya kita akan menggunakannya(GUx0RblkD3sPhHL5) di prompt-

  1. mysql -u debian-sys-maint -p Enter password:
    sekarang berikan kata sandi ( GUx0RblkD3sPhHL5 ).

  2. Sekarang exitdari MySQL dan login lagi as-

    mysql -u root -p Enter password:
    Sekarang berikan kata sandi baru. Itu saja, kami memiliki kata sandi baru untuk penggunaan lebih lanjut.

Itu berhasil untuk saya, semoga membantu Anda juga!

S.Yadav
sumber
6

Silakan baca dokumentasi resmi: Mysql: Cara Mengatur Ulang Kata Sandi Root

Jika Anda memiliki akses ke terminal:

MySQL 5.7.6 dan yang lebih baru:

$ mysql
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

MySQL 5.7.5 dan sebelumnya:

$ mysql
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
d.danailov
sumber
1
Memberi: ERROR 1131 (42000): Anda menggunakan MySQL sebagai pengguna anonim dan pengguna anonim tidak diizinkan mengubah kata sandi
MD. Mohiuddin Ahmed
1
Itu normal. Pengguna Anda anonim. Anda perlu menjalankan> mysql -u {your_username}
d.danailov
3

Saya menggunakan mysql-5.7.12-osx10.11-x86_64.dmg di Mac OSX

Proses instalasi secara otomatis membuat kata sandi sementara untuk pengguna root. Anda harus menyimpan kata sandi. Kata sandi tidak dapat dipulihkan.

Ikuti instruksi

  1. Pergi ke cd /usr/local/mysql/bin/
  2. Masukkan kata sandi sementara (yang akan terlihat seperti, "tsO07JF1 => 3")
  3. Anda harus mendapatkan prompt mysql>.
  4. Jalankan, SET PASSWORD FOR 'root'@'localhost' = PASSWORD('{YOUR_PASSWORD}');Jika Anda ingin mengatur kata sandi Anda: "root" maka perintahnya adalah,SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
  5. Lari ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
  6. Lari exit
  7. Lari ./mysql -u root -p
  8. Ketikkan kata sandi Anda. Dalam kasus saya, saya akan mengetik, "root" (tanpa kutipan)
  9. Itu saja.

Untuk kenyamanan, Anda harus menambahkan "/usr/local/mysql/bin"ke PATH Anda

Sekarang dari mana saja Anda bisa mengetik ./mysql -u root -p dan kemudian mengetik kata sandi dan Anda akan mendapatkan prompt mysql>.

Semoga ini bisa membantu.

tausiq
sumber
3

Jawabannya mungkin terdengar konyol, tetapi setelah menghabiskan berjam-jam waktu, ini adalah bagaimana saya membuatnya bekerja

mysql -u root -p

Saya mendapat pesan kesalahan

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Meskipun saya mengetik kata sandi yang benar (kata sandi sementara yang Anda dapatkan saat pertama kali menginstal mysql)

Saya melakukannya dengan benar ketika saya mengetikkan kata sandi ketika kata sandi itu berkedip

Amit Kumar
sumber
2

jika masalahnya masih ada, cobalah untuk memaksa mengubah celah

Hentikan Server MySQL (di Linux):

/etc/init.d/mysql stop

Hentikan Server MySQL (di Mac OS X):

mysql.server stop

Mulai daemon mysqld_safe dengan --skip-grant-tables

mysqld_safe --skip-grant-tables &
mysql -u root

Siapkan kata sandi baru pengguna root MySQL

use mysql;
update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
flush privileges;
quit;

Hentikan Server MySQL (di Linux):

/etc/init.d/mysql stop

Hentikan Server MySQL (di Mac OS X):

mysql.server stop

Mulai layanan server MySQL dan uji coba login dengan root:

mysql -u root -p
Max Yao
sumber
1

DENGAN kata sandi default akan menjadi nol, jadi Anda harus mengubah kata sandi dengan melakukan langkah-langkah di bawah ini.

terhubung ke mysql

root # mysql

Gunakan mysql

mysql> perbarui kata sandi yang ditetapkan pengguna = PASSWORD ('root') di mana Pengguna = 'root'; Terakhir, muat ulang hak istimewa:

mysql> hak istimewa flush; mysql> keluar

Rizwan Basheer
sumber
1

Hanya satu baris dan itu menyelesaikan masalah saya.

sudo dpkg-reconfigure mysql-server-5.5
Satyendra Sahani
sumber
1

Di Ubuntu 16.04 (MySQL versi 5.7.13) saya dapat menyelesaikan masalah dengan langkah-langkah di bawah ini:

  1. Ikuti instruksi dari bagian dalam B.5.3.2.2 Mengatur Ulang Kata Sandi Root: Unix dan Unix-Like Systems manual referensi MySQL 5.7

  2. Ketika saya mencoba #sudo mysqld_safe --init-file = / home / me / mysql-init & gagal. Kesalahan ada di /var/log/mysql/error.log

    2016-08-10T11: 41: 20.421946Z 0 [Catatan] Eksekusi init_file '/ home / me / mysql / mysql-init' dimulai. 2016-08-10T11: 41: 20.422070Z 0 [KESALAHAN] / usr / sbin / mysqld: File '/ home / me / mysql / mysql-init' tidak ditemukan (Errcode: 13 - Izin ditolak) 2016-08-10T11: 41: 20.422096Z 0 [KESALAHAN] Batalkan

Izin file mysql-init bukan masalah, perlu mengedit izin apparmor

  1. Edit oleh #sudo vi /etc/apparmor.d/usr.sbin.mysqld

    ....
      /var/log/mysql/ r,
      /var/log/mysql/** rw,
    
    
    # Allow user init file
      /home/pranab/mysql/* r,
    
      # Site-specific additions and overrides. See local/README for details.
      #include <local/usr.sbin.mysqld>
    }
  2. Lakukan #sudo /etc/init.d/apparmor reload

  3. Mulai mysqld_safe lagi coba langkah 2 di atas. Periksa /var/log/mysql/error.log pastikan tidak ada kesalahan dan mysqld berhasil dimulai

  4. Jalankan #mysql -u root -p

    Masukkan kata kunci:

Masukkan kata sandi yang Anda tentukan di mysql-init. Anda seharusnya bisa masuk sebagai root sekarang.

  1. Shutdown mysqld_safe oleh #sudo mysqladmin -u root -p shutdown

  2. Mulai mysqld dengan cara biasa dengan #sudo systemctl, mulai mysql

codegen
sumber
1

Jika Anda memiliki MySQL sebagai bagian dari gambar Docker (katakan pada port 6606) dan instal Ubuntu (pada port 3306) yang menentukan port tidak cukup:

mysql -u root -p -P 6606

akan melempar:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

karena mencoba menyambung ke localhost secara default, menentukan IP lokal Anda memperbaiki masalah:

mysql -u root -p -P 6606 -h 127.0.0.1
botris
sumber
0

Dalam versi MySQL terbaru tidak ada passworddalam mysql.usertabel.

Jadi, Anda perlu mengeksekusi ALTER USER. Masukkan perintah satu baris ini ke dalam file.

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Dan jalankan sebagai file init (sebagai pengguna root atau mysql)

mysqld_safe --init-file=/home/me/mysql-init &

Server MySQL harus dihentikan untuk memulai mysqld_safe.

Juga, mungkin ada masalah dengan izin apparmor untuk memuat file init ini. Baca lebih lanjut di sini https://blogs.oracle.com/jsmyth/entry/apparmor_and_mysql

Vladimir Kovalchuk
sumber
0

Jika Anda belum menetapkan kata sandi, kemudian jalankan mysql -uroot, itu berfungsi untuk saya.

ahbon
sumber
0

Di Mac, Jika Anda memiliki masalah saat masuk dengan kata sandi pertama yang Anda berikan saat instalasi, mungkin Anda bisa dengan mudah mematikan proses mysql lalu mencoba.

Jadi: 1- jalankan perintah berikut untuk menemukan PID dari mysql:

ps -aef | grep mysql | grep -v grep

2- matikan proses:

kill -15 [process id] 

Kemudian Anda bisa masuk dengan kata sandi awal menggunakan perintah ini:

mysql -uroot -p

Yang meminta Anda untuk memasukkan kata sandi Anda. Cukup masukkan kata sandi awal.

Maryam Zakani
sumber
0

Saya memiliki masalah serupa:

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

Tetapi dalam kasus saya, penyebabnya benar-benar konyol. Saya menyalin perintah dari dokumen Word, dan masalahnya adalah bahwa tanda hubung tidak memiliki kode ASCII 2D tetapi Unicode E28093.

Cara yang salah:

mysql -u root pxxxx

Cara yang benar:

mysql -u root -pxxxx

Keduanya terlihat sama tetapi tidak sama (coba, salin dan tempel mengganti kata sandi Anda).

Menghadapi jenis kesalahan ini, rekomendasinya adalah mencoba mengetik perintah alih-alih menyalin dan menempel.

cesargastonec
sumber
0

Saya mencoba dengan jawaban yang benar oleh @Lahiru, tetapi tidak bekerja dengan server MySQL versi 8.0.16 (Komunitas) di macOS Mojave.

Ikuti instruksi oleh Sameer Choudhary di atas dan dengan beberapa penyesuaian, saya dapat mengubah kata sandi root dan mengaktifkan akses root dari localhost.

Pembaruan: Semua ini tidak diperlukan, jika Anda menginstal di Mac OS menggunakan homebrew: "brew install mysql"

cspider
sumber
0

Saya punya masalah dengan Ubuntu 18.04 LTS dan Mysql Server versi 5.7.27-0ubuntu0.18.04.1 (Ubuntu).

Solusi saya adalah (berjalan sebagai root dengan sudo -i)

mysql <<-EOSQL
  use mysql;
  update user set plugin="mysql_native_password" where User='root';
  FLUSH PRIVILEGES ;
EOSQL

mysqladmin -u root password new_pw
Frank Hintsch
sumber
0

Saya juga menemukan masalah yang sama, apa yang saya lakukan adalah

1) Buka cmd Anda

2) Arahkan ke C: \ Program Files \ MySQL \ MySQL Server 8.0 \ bin> (di mana MySQL Server 8.0 mungkin berbeda tergantung pada server yang Anda instal)

3) Kemudian masukkan perintah berikut mysql -u root -p

4) Saya akan meminta kata sandi ... cukup tekan enter, karena terkadang kata sandi yang Anda masukkan saat menginstal diubah menjadi kosong.

sekarang Anda cukup mengakses database

Solusi ini bekerja untuk saya di platform windows

Aman-D
sumber
0

Sementara jawaban teratas (w / mysqladmin) bekerja di mac 10.15, maka itu tidak berfungsi di ubuntu. Kemudian mencoba banyak opsi lain termasuk mulai aman untuk mysql, tidak ada yang berhasil. Sehingga menambah respons baru.

Setidaknya untuk versi saya mendapat 5.7.28-0ubuntu0.18.04.4jawaban kurang IDENTIFIED WITH mysql_native_password. 5.7.28 adalah default pada LTS saat ini dan karenanya harus menjadi default untuk sebagian besar sistem baru (hingga 20,04 LTS keluar).

Ditemukan: https://www.digitalocean.com/community/questions/can-t-set-root-password-mysql-server dan sekarang diterapkan

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_pass_here';

yang berhasil.

arntg
sumber
0

Kesalahan yang saya hadapi adalah

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

itu masalah dengan port yang aktif.

Secara default mysql sedang berjalan port 3306 .

Anda dapat memeriksanya dengan menjalankan

  • dalam sistem 32-bit:

    sudo /opt/lampp/manager-linux.run

  • dalam sistem 64-bit:

    sudo /opt/lampp/manager-linux-x64.run

dan klik configuretombol

panel kontrol xampp

Dalam kasus saya port berjalan pada 3307 dan perintah yang saya gunakan adalah

mysql -u root -p -P 3307 -h 127.0.0.1
Rochana Pathiraja
sumber
0

Dalam kasus saya, saya mencoba untuk lulus perintah ke sebuah wadah. Dalam hal ini hanya kata pertama yang ditafsirkan. Pastikan Anda tidak berlari:

mysql

sebagai lawan:

mysql -uroot -ppassword schemaname

mungkin mencoba mengutip:

'mysql -uroot -ppassword schemaname'
Tidak
sumber