Sebelum saya mengacaukan sesuatu, ketika saya login menggunakan $ mysql -u root -p
, dan menunjukkan database:
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| game_data |
| test |
+--------------------+
Kemudian saya mencoba membuat pengguna baru dan melihat ada yang salah dengan HAK ISTIMEWA.
Jadi saya menghapus pengguna baru, dan saya kira saya menghapus 'root' dan 'Admin' secara tidak sengaja.
Lalu saya mencoba membuat 'root' lagi, tetapi mendapatkan akses ditolak kesalahan saat melakukan memberikan semua hak istimewa.
mysql> CREATE USER 'root'@'localhost' IDENTIFIED BY 'password';
mysql> grant all privileges on *.* to 'root'@'localhost' identified by 'password' with grant option;
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Jika saya masuk ke MySQL lagi menggunakan $ mysql -u root -p
, dan menunjukkan database,
+--------------------+
| Database |
+--------------------+
| information_schema |
+--------------------+
Semua database lain hilang.
Bagaimana cara memperbaiki MySQL sekarang?
Saya tidak dapat menemukan database 'mysql', tidak dapat membuat database, membuat pengguna, apa pun yang saya coba lakukan akan mendapatkan kesalahan.
GALAT 1045 (28000): Akses ditolak untuk 'root' @ 'localhost' pengguna (menggunakan kata sandi: YES).
Haruskah saya menginstal ulang MySQL menggunakan MacPorts? Jika menginstal ulang, saya akan kehilangan database game_data
, kan?
sumber
-p
dan kata sandi. Saya tahu ini konyol tapi mungkin bisa membantu seseorang.Jawaban:
Ikuti langkah-langkah di bawah ini.
Mulai server MySQL contoh atau daemon dengan
--skip-grant-tables
opsi (pengaturan keamanan).Jalankan pernyataan ini.
Jika Anda menghadapi bidang Kata Sandi yang tidak dikenal, gunakan di atas:
Akhirnya, restart instance / daemon tanpa
--skip-grant-tables
opsi.Anda sekarang harus dapat terhubung dengan kata sandi baru Anda.
Masukkan kata kunci:
my_password
Perbaiki untuk MySQL "Tidak dapat mengunci ibdata1" kesalahan
sumber
Tidak satu pun di atas yang membantu saya. Saya menemukan saya perlu menghapus metode plugin. Di 5.6, saya bisa melakukan:
Di 5.7, saya merasa perlu:
Menurut dokumen, dengan plugin disetel ke string kosong, seharusnya secara efektif default ke mysql_native_password, tetapi mungkin menjadi bingung oleh hash kata sandi kosong. Untuk nuansa lebih lanjut, Anda dapat membaca dokumentasi di sini: https://dev.mysql.com/doc/refman/5.7/en/native-authentication-plugin.html
sumber
set plugin='mysql_native_password'
melakukannya untuk saya, terima kasih! Untuk referensi: dev.mysql.com/doc/refman/5.7/en/…Pastikan juga catatan yang diperlukan dalam tabel
user
memilikiplugin
bidang kosong (mungkin ada, misalnya,"unix_socket"
).Sejak versi 5.5.7 mysql memiliki berbagai dukungan plugin auth https://dev.mysql.com/doc/refman/5.6/id/authentication-plugins.html
Jadi, jika Anda memiliki
plugin
bidang yang tidak kosong maka kata sandi akan diabaikan dan akan ada peringatan di log kesalahan mysql (bagi saya itu/var/log/mysql/error.log
):[Warning] 'user' entry 'root@localhost' has both a password and an authentication plugin specified. The password will be ignored.
sumber
plugin
darimysql_native_password
.Anda mungkin melihat sesuatu seperti ini;
Mengamankan penyebaran server MySQL.
Jika Anda melihatnya tertulis
Tonton 10 menit terakhir dari video ini , itu mengajarkan Anda bagaimana Anda melakukannya.
sumber
Cobalah:
sumber
--no-defaults --force
dilakukan sakelar? Kalau tidak, itu adalah duplikat VLQ dari jawaban yang diterima di atas.ERROR 1054 (42S22): Unknown column 'Password' in 'field list'
Dalam kasus saya, saya mengalami kerusakan basis data, setelah memulai kembali mysql di Debian login root tanpa kata sandi. Solusinya adalah ini:
Beberapa jawaban lain juga telah menyebutkan plugin native_password tetapi ini adalah bagaimana Anda dapat melakukannya tanpa mengotak-atik rumit. Begitulah cara itu dimaksudkan untuk diubah.
sumber