Lebih
MySQL ERROR 1045 (28000): Access denied for user 'bill'@'localhost' (using password: YES)
Pertama izinkan saya menyebutkan bahwa saya've pergi melalui banyak pertanyaan yang disarankan dan tidak menemukan relevan menjawab. Berikut adalah apa yang saya'm lakukan.
I'm terhubung ke Amazon EC2 instance. Saya bisa login dengan root MySQL dengan perintah ini:
mysql -u root -p
Kemudian saya membuat sebuah user baru bill dengan host %
CREATE USER 'bill'@'%' IDENTIFIED BY 'passpass';
Diberikan semua hak istimewa untuk pengguna tagihan:
grant all privileges on *.* to 'bill'@'%' with grant option;
Kemudian aku keluar dari user root dan mencoba untuk login dengan tagihan:
mysql -u bill -p
memasukkan sandi yang benar dan punya kesalahan ini:
ERROR 1045 (28000): Access denied for user 'bill'@'localhost' (using password: YES)
397
35
Anda mungkin memiliki seorang pengguna anonim
''@'localhost'
atau''@'127.0.0.1'
.Sebagai per manual:
Oleh karena itu, seperti seorang pengguna anonim akan "masker" setiap pengguna lainnya seperti
'[any_username]'@'%'
saat menghubungkan darilocalhost
.'bill'@'localhost'
tidak cocok'ruu'@'%'
, tapi akan sesuai (mis.)''@' localhost'
beforehands.Solusi yang disarankan adalah penurunan ini pengguna anonim (ini biasanya hal yang baik untuk dilakukan lagian).
Di bawah ini editan sebagian besar tidak relevan dengan pertanyaan utama. Ini hanya dimaksudkan untuk menjawab beberapa pertanyaan yang diajukan di lain komentar dalam thread ini.
Edit 1
Otentikasi seperti
'ruu'@'%'
melalui socket.Edit 2
Tepat setup yang sama, kecuali saya kembali diaktifkan jaringan, dan sekarang saya membuat seorang pengguna anonim
''@'localhost'
.Edit 3
Situasi yang sama seperti di edit 2, sekarang menyediakan pengguna anonim's sandi.
Kesimpulan 1, dari edit 1: Satu dapat mengotentikasi sebagai
'ruu'@'%'
melalui socket.Kesimpulan 2, dari edit 2: Apakah salah satu menghubungkan melalui TCP atau melalui soket tidak memiliki dampak pada proses otentikasi (kecuali satu tidak dapat terhubung dengan orang lain tapi
'sesuatu'@'localhost'
melalui socket, jelas).Kesimpulan 3, dari edit 3: Meskipun saya ditentukan
-ubill
, saya telah diberikan akses sebagai pengguna anonim. Hal ini karena "aturan pengurutan" disarankan di atas. Perhatikan bahwa dalam kebanyakan default instalasi, tidak ada password, pengguna anonim ada (dan harus diamankan/dihapus).Coba:
Ketika anda berlari
dan punya kesalahan ini
mysqld mengharapkan anda untuk menghubungkan sebagai
ruu@localhost
Mencoba menciptakan
ruu@localhost
Jika anda ingin terhubung dari jarak jauh, anda harus menentukan nama DNS, IP publik, atau 127.0.0.1 menggunakan TCP/IP:
Setelah anda login, silahkan jalankan ini
USER() laporan bagaimana anda mencoba untuk mengotentikasi di MySQL
CURRENT_USER() laporan bagaimana anda diizinkan untuk melakukan otentifikasi pada MySQL dari mysql.pengguna meja
Ini akan memberikan anda pandangan yang lebih baik tentang bagaimana dan mengapa anda diizinkan untuk login ke mysql. Mengapa pandangan ini penting untuk tahu? Itu harus dilakukan dengan otentikasi pengguna memesan protokol.
Berikut adalah contoh: saya akan membuat seorang pengguna anonim pada desktop saya MySQL
OK menonton saya login sebagai pengguna anonim:
Otentikasi pemesanan sangat ketat. Cek dari yang paling spesifik untuk wanita. Saya menulis tentang hal ini authentiation gaya dalam DBA StackExchange.
Don't lupa untuk secara eksplisit panggilan untuk TCP sebagai protokol untuk mysql client jika diperlukan.
Super telat ini
Saya mencoba semua ini jawaban yang lain dan berlari banyak versi yang berbeda dari
mysql -u root -p
tapi tidak pernah hanya berlarimysql -u root -p
Dan hanya menekan
[ENTER]
untuk password.Setelah saya lakukan bahwa hal itu bekerja. Semoga ini bisa membantu seseorang.
Ketika anda mengetik
mysql -u root -p
, anda're menghubungkan ke server mysql dari unix socket.Namun pemberian yang anda berikan,
'ruu'@'%'
hanya pertandingan TCP/IP koneksi yang cukup aneh.Jika anda ingin memberikan akses ke lokal unix socket, anda perlu untuk memberikan hak ke 'bill'@'localhost' , yang anehnya adalah tidak sama dengan 'ruu'@'127.0.0.1'
Anda juga bisa terhubung dengan menggunakan TCP/IP dengan mysql command line client, untuk pertandingan hak anda sudah diberikan, misalnya lari
mysql -u root -p -h 192.168.1.123
atau mana alamat IP lokal anda miliki.Terkait masalah di kasus saya mencoba untuk terhubung menggunakan :
Spasi rupanya diperbolehkan antara -u #uname# tetapi TIDAK antara -p dan #password#
Oleh karena itu diperlukan:
Sebaliknya dengan white-space antara -p mypass mysql membutuhkan 'mypass' sebagai db nama
Jika anda lupa password anda atau anda ingin mengubah password anda.Anda dapat ikuti langkah-langkah berikut :
Bingo! Anda dapat menghubungkan database anda dengan username dan password baru:
Menyelamatkan diri dari sakit kepala BESAR... masalah Anda mungkin bahwa anda kehilangan tanda kutip password. Setidaknya itu adalah kasus saya yang berputar saya selama 3 jam.
Solusinya adalah dengan menghapus anonim (Ada) pengguna!
Saya juga menghadapi masalah yang sama pada server setup dengan orang lain. Biasanya saya don't memilih untuk membuat seorang pengguna anonim pada saat menginstal MySQL, jadi tidak't melihat ini. Awalnya saya masuk sebagai "root" user dan dibuat beberapa "normal" pengguna (alias pengguna dengan hak istimewa hanya di dbs dengan nama mereka sebagai awalan), kemudian log out, kemudian melanjutkan untuk memverifikasi pertama pengguna normal. Saya tidak't log in. Baik melalui phpMyAdmin, atau melalui shell. Ternyata, pelakunya adalah "Salah" user.
Solusi terbaik yang saya temukan untuk diri sendiri.
saya pengguna sonar dan setiap kali saya mencoba untuk terhubung ke database eksternal atau mesin lain saya mendapatkan error seperti
Juga seperti yang saya coba ini dari mesin yang lain dan melalui Jenkins pekerjaan saya URL untuk mengakses lebih
jika anda ingin terhubung dari jarak jauh anda dapat menentukan hal ini dengan cara yang berbeda sebagai berikut:
Untuk mengakses ini dengan URL anda hanya perlu mengeksekusi query berikut.
Aku punya sedikit masalah yang sama pada usaha pertama saya untuk masuk ke MySQL, sebagai
root
, itu mengatakan kepada saya akses ditolak. Ternyata saya lupa untuk menggunakansudo
...Jadi, jika anda gagal di
root
pertama mencoba, coba:dan kemudian masukkan password anda, ini harus bekerja.
Oke, aku'm tidak yakin tapi mungkin ini adalah saya.cnf file di dalam direktori instalasi mysql adalah pelakunya. Komentar baris ini dan masalah dapat diselesaikan.
Hanya ingin membiarkan anda tahu keadaan yang tidak biasa saya menerima kesalahan yang sama. Mungkin ini membantu seseorang di masa depan.
Saya telah mengembangkan beberapa dasar pandangan, dibuat pada situs pengembangan dan ditransfer ke produksi-situs. Seminggu kemudian saya mengubah script PHP dan tiba-tiba kesalahan datang bahwa Akses ditolak untuk pengguna 'lokal-web-pengguna'@'localhost'. Datasource objek tidak berubah, jadi saya berkonsentrasi pada pengguna database di MySQL, mengkhawatirkan sementara itu seseorang meng-hack website saya. Untungnya sisa situs tampak terluka.
Kemudian ternyata bahwa pandangan yang pelakunya(s). Objek transfer yang dilakukan dengan menggunakan orang lain (dan remote: admin@ip-address) pengguna dari situs web lokal pengguna. Jadi pandangan yang dibuat dengan 'admin'@'ip-address' sebagai pendukung. Lihat penciptaan KEAMANAN default adalah
Ketika lokal-web-pengguna mencoba untuk menggunakan tampilan ini tersandung pada kurang hak-hak definer menggunakan tabel. Setelah keamanan diubah menjadi:
masalah itu diselesaikan. Masalah yang sebenarnya adalah benar-benar berbeda dari yang diantisipasi berdasarkan pesan kesalahan.
It's perbedaan antara:
dan
Check it:
Hal ini juga terjadi ketika password anda berisi beberapa karakter khusus seperti @,$,dll. Untuk menghindari situasi ini, anda bisa membungkus password dalam tanda kutip tunggal:
Atau sebaliknya don't menggunakan password saat masuk. Biarkan kosong dan kemudian ketik ketika terminal bertanya. Ini adalah cara yang direkomendasikan.
Bagi saya, masalah ini disebabkan oleh fitur baru dari MySQL 5.7.2:
user
entri abaikan jika merekaplugin
bidang kosong.Set ke misal
mysql_native_password
untuk mengaktifkan kembali mereka:Lihat catatan rilis untuk MySQL 5.7.2, di bawah «Otentikasi Catatan».
Untuk beberapa alasan (mungkin karena saya pre-4.1 hash password telah dihapus), yang
mysql_upgrade
script didn't set default plugin nilai.Aku tahu dengan memperhatikan pesan peringatan berikut di
/var/log/mysql/kesalahan.log
:Saya posting jawaban ini di sini mungkin untuk menyelamatkan seseorang dari menggunakan yang sama konyol jumlah waktu ini seperti yang saya lakukan.
Tidak yakin jika orang lain akan menemukan ini berguna, tapi saya mengalami kesalahan yang sama dan mencari di seluruh untuk setiap pengguna anonim...dan tidak ada't apapun. Masalah akhirnya menjadi yang pengguna akun diatur ke "Memerlukan SSL" - yang saya temukan di PHPMyAdmin dengan pergi ke Account Pengguna dan mengklik Edit Hak akses bagi pengguna. Segera setelah saya dicentang opsi ini, semuanya bekerja seperti yang diharapkan!
Debugging Ringkasan
Ada kemungkinan besar bahwa anda mungkin mengalami masalah ini beberapa kali dalam pekerjaan anda. Masalah ini terjadi pada saya sebagian besar waktu karena salah memasukkan nama pengguna atau kata sandi. Meskipun ini adalah salah satu alasan, ada banyak kemungkinan yang anda mungkin mendapatkan masalah ini. Kadang-kadang, hal ini terlihat sangat mirip, tetapi ketika anda menggali lebih dalam, anda akan menyadari beberapa faktor yang berkontribusi terhadap kesalahan ini. Posting ini akan menjelaskan secara detail, yang paling umum alasan dan bekerja di sekitar untuk memperbaiki masalah ini.
Alasan yang mungkin:
Ini adalah alasan paling umum untuk kesalahan ini. Jika anda memasukkan username atau password salah, pasti anda akan mendapatkan error ini.
Solusi:
Solusi untuk kesalahan jenis ini adalah sangat sederhana. Cukup masukkan username dan password yang benar. Kesalahan ini akan diselesaikan. Dalam kasus jika anda lupa password, anda dapat me-reset username/password. Jika anda lupa password untuk admin / root rekening, ada banyak cara untuk me-reset / merebut kembali password root. Saya akan mempublikasikan posting lain tentang cara reset password root dalam kasus jika anda lupa password root.
MySQL menyediakan host berdasarkan pembatasan untuk akses pengguna sebagai fitur keamanan. Dalam lingkungan produksi, kita digunakan untuk membatasi permintaan akses hanya ke server Aplikasi. Fitur ini benar-benar membantu dalam berbagai skenario produksi.
Solusi:
Ketika anda menghadapi jenis masalah, periksa dulu apakah host anda diperbolehkan atau tidak dengan memeriksa mysql.tabel user. Jika tidak didefinisikan, anda dapat memperbarui atau memasukkan record baru ke mysql.tabel user. Umumnya, akses sebagai user root dari mesin remote dinonaktifkan dan tidak praktik terbaik, karena masalah keamanan. Jika anda memiliki kebutuhan untuk mengakses server anda dari beberapa mesin, memberikan akses hanya untuk mesin-mesin. Itu lebih baik untuk tidak menggunakan wildcard (%) dan memberikan universal mengakses. Biar update mysql.tabel user, sekarang demouser dapat mengakses server MySQL dari setiap host.
Ini jenis kesalahan terjadi ketika pengguna, yang anda mencoba untuk mengakses tidak ada pada server MySQL.
Solusi:
Ketika anda menghadapi jenis masalah, hanya memeriksa apakah pengguna yang ada di mysql.tabel user atau tidak. Jika catatan tidak ada, pengguna tidak dapat mengakses. Jika ada kebutuhan untuk itu pengguna untuk mengakses, membuat user baru dengan username.
Poin-poin penting
Hal ini tidak dianjurkan untuk menggunakan wildcard sementara mendefinisikan pengguna tuan rumah, cobalah untuk menggunakan tepat nama host.
Disable root login dari remote mesin.
Gunakan proxy konsep pengguna.
Ada beberapa konsep-konsep lain yang berkaitan dengan topik ini dan masuk ke rincian dari topik tersebut sangat berbeda cakupan artikel ini. Kami akan melihat ke topik terkait berikut di artikel-artikel mendatang.
Saya berharap posting ini akan membantu anda untuk memperbaiki Kesalahan MySQL Kode 1045 Access denied for user di MySQL.
Saya menemukan kasus lain yang muncul di permukaan untuk menjadi edge kasus, saya bisa ekspor ke file sistem, melalui PILIH KE .. OUTFILE sebagai root, tapi bukan sebagai user biasa. Meskipun hal ini mungkin menjadi masalah perizinan, saya've melihat itu, dan melihat apa-apa terutama jelas. Semua bisa saya katakan adalah bahwa mengeksekusi query sebagai user biasa yang memiliki semua hak akses pada data base di pertanyaan kembali akses denied error yang menyebabkan saya untuk topik ini. Ketika saya menemukan transkrip yang berhasil menggunakan hak PILIH KE ... OUTFILE dalam proyek lama, saya menyadari bahwa saya login sebagai root. Cukup yakin, ketika saya login sebagai root, query berlari seperti yang diharapkan.
Saya berharap anda tidak melakukan lebih banyak kerusakan dengan juga menghapus debian-sys-maint user di mysql
Memiliki mysql daemon yang berjalan dengan cara normal. Mulai mysql client seperti yang ditunjukkan di bawah ini
Di terminal lain,
kucing
file/etc/mysql/debian.cnf
. File yang berisi password; paste bahwa password ketika diminta untuk itu.http://ubuntuforums.org/showthread.php?t=1836919