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

Kesalahan MySQL 1449:Pengguna yang ditentukan sebagai penentu tidak ada

Ini biasanya terjadi saat mengekspor tampilan/pemicu/prosedur dari satu database atau server ke yang lain karena pengguna yang membuat objek itu tidak ada lagi.

Anda memiliki dua opsi:

1. Ubah DEFINER

Ini mungkin paling mudah dilakukan ketika awalnya mengimpor objek database Anda, dengan menghapus DEFINER pernyataan dari dump.

Mengubah definisi nanti sedikit lebih rumit:

Cara mengubah penentu tampilan

  1. Jalankan SQL ini untuk menghasilkan pernyataan ALTER yang diperlukan

    SELECT CONCAT("ALTER DEFINER=`youruser`@`host` VIEW ", 
    table_name, " AS ", view_definition, ";") 
    FROM information_schema.views 
    WHERE table_schema='your-database-name';
    
  2. Salin dan jalankan pernyataan ALTER

Cara mengubah penentu untuk prosedur tersimpan

Contoh:

UPDATE `mysql`.`proc` p SET definer = '[email protected]%' WHERE definer='[email protected]%'

Hati-hati, karena ini akan mengubah semua definisi untuk semua database.

2. Buat pengguna yang hilang

Jika Anda menemukan kesalahan berikut saat menggunakan database MySQL:

The user specified as a definer ('someuser'@'%') does not exist`

Kemudian Anda dapat menyelesaikannya dengan menggunakan berikut:

GRANT ALL ON *.* TO 'someuser'@'%' IDENTIFIED BY 'complex-password';
FLUSH PRIVILEGES;

Dari http://www .lynnnayko.com/2010/07/mysql-user-specified-as-definer-root.html

Ini bekerja seperti pesona - Anda hanya perlu mengubah someuser dengan nama pengguna yang hilang. Di server dev lokal, Anda biasanya hanya menggunakan root .

Juga pertimbangkan apakah Anda benar-benar perlu memberi pengguna ALL izin atau apakah mereka dapat melakukannya dengan lebih sedikit.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tampilkan Kueri SQL Lengkap di Tampilkan Daftar Proses MySQL

  2. Apa yang Harus Diperiksa jika Pemanfaatan Memori MySQL Tinggi?

  3. Cara Mengatasi Akses Ditolak Untuk Pengguna 'root'@'localhost' (menggunakan Kata Sandi:Ya) Saat Menghubungkan Database MySQL

  4. Bagaimana Fungsi LOWER() Bekerja di MySQL

  5. Cara Menampilkan Nilai Baris sebagai Kolom di MySQL