Rumah >pangkalan data >tutorial mysql >Ralat MySQL 1449: Bagaimana untuk Membetulkan Isu 'Pengguna yang dinyatakan sebagai penentu tidak wujud'?

Ralat MySQL 1449: Bagaimana untuk Membetulkan Isu 'Pengguna yang dinyatakan sebagai penentu tidak wujud'?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-03 17:25:17442semak imbas

MySQL Error 1449: How to Fix the

Ralat MySQL 1449: Menyelesaikan Isu Pentakrif Hilang

Apabila cuba melaksanakan pertanyaan pangkalan data tertentu, pengguna mungkin menghadapi ralat MySQL 1449, yang menunjukkan bahawa pengguna yang dinyatakan sebagai penentu tidak wujud. Ralat ini berlaku apabila pengguna yang bertanggungjawab untuk mentakrifkan paparan, pencetus atau prosedur tidak lagi terdapat dalam pangkalan data.

Punca Ralat:

Mesej ralat "#1449 - Pengguna yang ditentukan sebagai penentu ('web2vi'@'%') tidak wujud" menandakan bahawa pengguna 'web2vi' dengan hos '%' tidak boleh ditemui dalam pangkalan data. Ini biasanya berlaku apabila objek pangkalan data dieksport dari satu pelayan ke pelayan lain dan pengguna asal tidak dipindahkan bersama-sama objek.

Pilihan Resolusi:

Terdapat dua utama pendekatan untuk menyelesaikan isu ini:

1. Mengubah suai DEFINER:

  • Jika boleh, alih keluar sebarang pernyataan DEFINER daripada longgokan pangkalan data sebelum mengimport objek untuk mengelakkan konflik pengguna.
  • Untuk menukar penentu kemudian , laksanakan yang berikut langkah:

    • Paparan: Jana penyataan ALTER untuk menukar penentu. Jalankan pertanyaan berikut:

      SELECT CONCAT("ALTER DEFINER=youruser@host VIEW ",
      table_name, " AS ", view_definition, ";")
      FROM information_schema.views
      WHERE table_schema='your-database-name';
    • Prosedur Tersimpan: Kemas kini terus penentu untuk prosedur tersimpan. Contohnya:

      UPDATE `mysql`.`proc` p SET definer = 'user@%' WHERE definer='root@%'

2. Mencipta Pengguna Yang Hilang:

  • Tentukan pengguna yang hilang, yang selalunya 'root' dalam pelayan pembangunan setempat.
  • Berikan pengguna kebenaran penuh kepada pangkalan data menggunakan arahan berikut:

    • Untuk MySQL:

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

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

Selepas melaksanakan salah satu daripada penyelesaian ini, jalankan semula pertanyaan untuk mengesahkan bahawa ralat telah diselesaikan.

Atas ialah kandungan terperinci Ralat MySQL 1449: Bagaimana untuk Membetulkan Isu 'Pengguna yang dinyatakan sebagai penentu tidak wujud'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn