Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

MySQL Stored Procedure DEFINER=`root`@`%` ไม่ทำงานใน localhost?


ก่อนอื่นคุณต้องตรวจสอบโฮสต์ โฮสต์สามารถเป็น 'localhost' หรือ '%' ตรวจสอบการมีอยู่ของบัญชีผู้ใช้กับโฮสต์ -

mysql> เลือกผู้ใช้, โฮสต์จาก MySQL.user;

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+--------------------------------------+| ผู้ใช้ | โฮสต์ |+-----------------------------------------------+| บ๊อบ | % || ผู้ใช้2 | % || mysql.infoschema | % || mysql.session | % || mysql.sys | % || ราก | % || @ชื่อผู้ใช้@ | localhost || อดัม สมิธ | localhost || เดวิด | localhost || เจมส์ | localhost || จอห์น | localhost || จอห์น โด | localhost || ผู้ใช้1 | localhost || น | localhost || hbstudent | localhost || mysql.infoschema | localhost || mysql.session | localhost |+--------------------------+-----------+17 แถวในชุด (0.00 วินาที)

ตอนนี้ เรากำลังจะเปลี่ยนตัวกำหนดสำหรับผู้ใช้ Bob และโฮสต์คือ '%' ต่อไปนี้เป็นแบบสอบถามเพื่อสร้างกระบวนงานที่เก็บไว้กับตัวกำหนด -

mysql> DELIMITER // mysql> CREATE DEFINER=`Bob`@`%` ขั้นตอน `ข้อความ`() เริ่มต้น เลือก "สวัสดีชาวโลก"; END // แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.14 วินาที) mysql> DELIMITER;

ตอนนี้เรียกกระบวนงานที่เก็บไว้ด้วยความช่วยเหลือของคำสั่ง CALL -

mysql> โทร `Message`();

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+-------------+| สวัสดีชาวโลก |+-------------+| สวัสดีชาวโลก |+-------------+1 แถวในชุด (0.00 วินาที) แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.01 วินาที)