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

Memberikan hak ke database MySQL tambahan yang menyebabkan masalah

MySQL mengidentifikasi pengguna dengan KEDUA nama pengguna dan host. Ketika MySQL melakukan otentikasi saat login, MySQL pertama-tama mencari nama host yang sama persis. Jika tidak menemukan kecocokan yang tepat, maka ia akan mencari host yang berisi wildcard '%'.

Ketika Anda melakukan GRANT ... TO [email protected] , MySQL membuat user baru (tanpa password, karena tidak ada IDENTIFIED BY diberikan dalam pernyataan.

Lalu apa yang terjadi, ketika Anda mencoba masuk sebagai myuser dari localhost, mysqld mencoba menemukan entri yang cocok dengan 'myuser'@'localhost' di tabel mysql.user dan menemukannya. Dan sesi mendapatkan hak istimewa yang diberikan kepada pengguna itu.

(Untuk lebih tepatnya, mysqld tidak benar-benar melihat isi tabel mysql.user, apa yang benar-benar terlihat pada struktur dalam-memori, yang diisi dari tabel ketika dibangun. Sebuah pembangunan kembali dari struktur memori dipicu oleh pernyataan GRANT, REVOKE atau FLUSH PRIVILEGES.)

Apa yang terjadi SEBELUM Anda menambahkan pengguna baru itu, mysqld mencari kecocokan yang tepat pada pengguna dan nama host, dan tidak menemukannya. Tapi itu menemukan entri dengan wildcard '%', jadi cocok dengan itu, jadi sesi mendapatkan semua hak istimewa yang diberikan kepada pengguna 'pengguna saya'@'%'.

Kedua pengguna 'u'@'%' dan 'u'@'localhost' adalah terpisah dan berbeda satu sama lain. Hak istimewa harus diberikan kepada setiap pengguna secara individual. Hak istimewa apa pun yang diberikan kepada 'u'@'%' berlaku HANYA untuk pengguna itu dan BUKAN ke 'u'@'localhost' .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak dapat menghubungkan Google Cloud SQL di MySql Workbench

  2. PHP/MySQL:Praktik operasi/penyimpanan uang terbaik?

  3. Contoh LOCALTIMESTAMP – MySQL

  4. Joomla! 3 instalasi macet saat membuat tabel database

  5. MySQL DENGAN ROLLUP tidak menunjukkan apa yang saya harapkan