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

Cara memecahkan masalah pendefinisi MySQL

Artikel ini membahas cara memecahkan masalah yang mungkin terjadi saat DEFINER atribut digunakan dengan objek tersimpan MySQL (tampilan, pemicu, fungsi, dan prosedur tersimpan).

Masalah

Anda mungkin mengalami masalah saat melihat atau menjalankan objek tersimpan MySQL (tampilan, pemicu, fungsi, dan prosedur tersimpan). Misalnya, Anda mungkin menerima pesan kesalahan berikut di phpMyAdmin:

Error in processing request: No routine with name 'example' found in database 'example_db'. You might be lacking the necessary privileges to edit this routine.

Atau, Anda mungkin mengalami kesalahan yang tampaknya acak selama pengoperasian situs web, atau hilangnya fungsionalitas basis data.

Penyebab

DEFINER atribut digunakan untuk menentukan akun pengguna MySQL yang dapat mengakses objek tersimpan tertentu. Namun, masalah dapat terjadi saat akun pengguna MySQL di DEFINER atribut tidak cocok dengan pengguna MySQL yang saat ini masuk. Misalnya, ini dapat terjadi saat menggunakan phpMyAdmin cPanel, yang selalu masuk sebagai pengguna akun utama (cPanel), dan bukan sebagai pengguna basis data yang ditentukan pengguna.

Demikian pula, masalah ini dapat terjadi setelah migrasi situs jika DEFINER atribut dalam database tidak diperbarui dengan pengguna database lingkungan hosting baru.

Resolusi

Untuk mengatasi masalah ini, Anda dapat mencoba masuk ke database sebagai pengguna database yang dirujuk di DEFINER atribut. (Untuk menentukan pengguna database yang benar, Anda mungkin perlu membuang database dan memeriksa DEFINER atribut.) Ada beberapa cara Anda dapat masuk sebagai pengguna basis data yang berbeda:

Metode #1:Menggunakan aplikasi klien MySQL

Anda dapat menggunakan aplikasi klien MySQL, seperti MySQL Workbench, untuk masuk ke database sebagai pengguna database yang benar. Anda kemudian akan dapat mengedit dan menjalankan objek yang disimpan menggunakan identitas yang benar. Untuk informasi tentang cara menggunakan aplikasi klien MySQL untuk terhubung ke database Anda, silakan lihat artikel ini.

Metode #2:Gunakan program baris perintah 'mysql'

Atau, Anda dapat menggunakan mysql program baris perintah untuk masuk ke database sebagai pengguna database yang benar. Anda kemudian akan dapat mengedit dan menjalankan objek yang disimpan menggunakan identitas yang benar. Untuk informasi tentang cara menggunakan mysql program baris perintah, silakan lihat artikel ini.

Metode #3:Gunakan instal kustom phpMyAdmin

Jika Anda tidak ingin menggunakan aplikasi klien MySQL atau baris perintah, Anda dapat membuat instalasi phpMyAdmin mandiri di akun hosting Anda. Instalasi kustom ini memungkinkan Anda untuk masuk ke database sebagai pengguna database yang benar, bukan sebagai pengguna akun utama (cPanel). Untuk informasi tentang cara membuat instalasi phpMyAdmin khusus, silakan lihat artikel ini.

Terkadang, Anda tidak dapat masuk ke database sebagai pengguna database yang dirujuk di DEFINER atribut. Misalnya, situs yang telah dimigrasikan dari penyedia hosting lain mungkin memiliki konvensi penamaan MySQL yang berbeda, dan tidak mungkin membuat pengguna database dengan nama yang benar. Dalam hal ini, Anda harus melakukan hal berikut:

  1. Buang seluruh database ke file. Untuk informasi tentang cara melakukannya, silakan lihat artikel ini.
  2. Gunakan editor teks pilihan Anda untuk memperbarui DEFINER . secara manual atribut untuk mereferensikan pengguna database yang Anda kontrol.
  3. Impor database yang dimodifikasi ke akun Anda. Untuk informasi tentang cara melakukannya, silakan lihat artikel ini.
  4. Uji database baru. Sekarang Anda seharusnya dapat mengedit dan menjalankan objek tersimpan menggunakan identitas yang benar.

Informasi Lebih Lanjut

Untuk informasi lebih lanjut tentang pendefinisi, silakan kunjungi https://dev.mysql.com/doc/refman/8.0/en/stored-objects-security.html.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konversi MySQL ke SQLite

  2. Tabel pivot dinamis MySQL

  3. Menggunakan Database Relasional MySQL di Arch Linux

  4. Menggunakan SELECT INTO OUTFILE di MySQL

  5. Doctrine 2 dan tabel tautan Banyak-ke-banyak dengan bidang tambahan