Ketika saya menjalankan mysqldump, saya mendapatkan kesalahan:
mysqldump: Got error: 1449: The user specified as a definer ('root'@'foobar') does not exist when using LOCK TABLES
Ini masuk akal karena foobar
merupakan mesin warisan yang tidak ada lagi.
Bagaimana cara mengubah definisi semua tabel saya menjadi 'root' @ 'localhost'?
mysql
mysqldump
permissions
kfmfe04
sumber
sumber
Jawaban:
Apa yang saya pikirkan adalah bahwa database yang Anda coba buang berisi prosedur / metode yang didefinisikan oleh pengguna saat login sebagai root @ 'foobar'.
Sekarang solusinya adalah Anda harus mengganti definisi untuk prosedur / metode tersebut
maka Anda dapat menghasilkan dump tanpa kesalahan.
Anda dapat melakukan ini seperti ..
Hati-hati, karena ini akan mengubah semua definisi untuk semua database.
Cobalah....!
UPDATE pada 9 Februari 2012
Saat saya melihat tautan yang diberikan oleh @gbn yang merupakan jawaban yang diberikan oleh @Rando yang juga bisa menjadi Kasus. Silakan kunjungi tautannya
EDIT oleh @RolandoMySQLDBA 2011-12-16 11:20 EDT
Meskipun berisiko, jawaban ini bagus. Hanya untuk memperjelas: Anda dapat menentukan basis data dalam permintaan Anda seperti ini:
sumber
UPDATE
berubah meja, tapimysqldump
tidak melihatnya:mysqldump: Got error: 1449: The user specified as a definer ('root'@'%') does not exist when using LOCK TABLES
. Bahkan setelah restartmysql
. Saya sedang berlarimysql-5.5.31
.update mysql.proc
pendekatan memang bekerja.Lebih mudah menggunakan
--single-transaction
sakelar:sumber
Solusi tercepat hanya akan membuat ulang definisi jadi itu ada, asalkan tidak membuat konflik dengan pengguna yang ada.
CREATE USER 'root'@'foobar';
sumber
Ekspor semua tampilan basis data
<DB>
:atau:
Edit
views.sql
dan buat kembali:Tentukan
-u
dan-p
aktifkan jika perlu.sumber