Computer >> Máy Tính >  >> Lập trình >> MySQL

Thủ tục lưu trữ MySQL DEFINER =`root` @`% 'không hoạt động trong localhost?

Trước hết, bạn cần kiểm tra máy chủ. Máy chủ có thể là ‘localhost’ hoặc ‘%’. Kiểm tra sự tồn tại của tài khoản người dùng với máy chủ lưu trữ -

mysql> select user,host from MySQL.user;

Điều này sẽ tạo ra kết quả sau -

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| Bob              | %         |
| User2            | %         |
| mysql.infoschema | %         |
| mysql.session    | %         |
| mysql.sys        | %         |
| root             | %         |
| @UserName@       | localhost |
| Adam Smith       | localhost |
| David            | localhost |
| James            | localhost |
| John             | localhost |
| John Doe         | localhost |
| User1            | localhost |
| am               | localhost |
| hbstudent        | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
+------------------+-----------+
17 rows in set (0.00 sec)

Bây giờ, chúng ta sẽ thay đổi bộ định nghĩa cho người dùng Bob và máy chủ lưu trữ là ‘%’. Sau đây là truy vấn để tạo một thủ tục được lưu trữ với trình định nghĩa -

mysql> DELIMITER //
   mysql> CREATE DEFINER=`Bob`@`%` PROCEDURE `Message`()
      BEGIN
        select "Hello World";
        END
        //
   Query OK, 0 rows affected (0.14 sec)
mysql> DELIMITER ;

Bây giờ hãy gọi thủ tục đã lưu trữ với sự trợ giúp của lệnh CALL -

mysql> call `Message`();

Điều này sẽ tạo ra kết quả sau -

+-------------+
| Hello World |
+-------------+
| Hello World |
+-------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.01 sec)