Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Akses ditolak untuk 'test'@'ip' pengguna (menggunakan kata sandi:YA)

"Akses ditolak untuk pengguna 'test'@'ip'(using password:YES)" adalah kesalahan MySQL.

Ini berarti bahwa pada tingkat jaringan semuanya berfungsi , karena ditolak akses sebagai pengguna tertentu , server harus memahami pengguna mana yang Anda coba sambungkan sebagai . Jadi jaringan, firewall, perutean, dan seterusnya dan seterusnya, semuanya harus berfungsi; server harus mendengarkan, dll.

Masalahnya terletak "hanya" di otentikasi .

Coba sambungkan secara lokal ke database (untuk mengesampingkan otentikasi) dan periksa tabel hak istimewa:

USE mysql;
SELECT User, Host, Password from user WHERE User = 'test';

dan ingat bahwa baris yang Anda minati adalah baris yang menyebutkan IP (karena pesan kesalahan menentukan IP , dan tidak nama host - dalam hal ini, itu bisa menjadi masalah DNS; nama host adalah nama host yang diyakini server Anda berasal , bukan nama host asal Anda sebenarnya).

Pencocokan pengguna/host berjalan dari lebih spesifik untuk kurang spesifik . Jadi jika Anda sudah memiliki:

user      host     password
test      1.2.3.4  foo

dan berlari,

GRANT... TO [email protected]'%' ... PASSWORD bar

...hibah ini akan bekerja dari mana saja kecuali 1.2.3.4, di mana kata sandi akan tetap 'foo'.

Dari manual (tautan di atas):

Anda mungkin terpaksa melakukannya

USE mysql;
DELETE FROM user WHERE User = 'test';
GRANT ALL PRIVILEGES ON database.* TO 'test'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

untuk memastikan bahwa tidak ada baris palsu dalam tabel pemberian yang mengacu pada 'tes' pengguna.

(Juga, HIBAH seharusnya, menurut saya,

GRANT ALL PRIVILEGES ON databasename.*

)

Keraguan keamanan (tidak terkait dengan jawaban)

Manual di atas mengatakan:Kekhususan alamat IP literal tidak terpengaruh oleh apakah ia memiliki netmask, jadi 192.168.1.13 dan 192.168.1.0/255.255.255.0 dianggap sama spesifiknya .

Sekarang sekilas 127.0.0.1/0.0.0.0 tampaknya sangat spesifik (dan tidak berbahaya) untuk localhost . Netmask, jika saya tidak salah, memastikan bahwa itu setara dengan % , kecuali bahwa ini sangat spesifik dan akan dijalankan terlebih dahulu . Oleh karena itu

test     bar         %           
test     localfoo    127.0.0.1/0.0.0.0

berarti kata sandi untuk test dari mana saja itu sama sekali bukan "bar", tapi "localfoo".

Tidak ada yang akan memasukkan hibah seperti itu secara tidak sengaja, tetapi ada kesalahan dan kesalahan .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Inner Join Query Beberapa Tabel

  2. Bergabung dengan 2 tabel di SELECT(MYSQL/PHP)

  3. Hitung total berjalan di MySQL

  4. Apa yang dikembalikan oleh MySQL DELETE yang berhasil? Bagaimana cara memeriksa apakah DELETE berhasil?

  5. PHP/PDO/MySQL:memasukkan ke MEDIUMBLOB menyimpan data yang buruk