我正在使用mysql 5.5,试图编写一个脚本来创建用户,视图并为这些视图授予选择特权。到目前为止,这就是我所拥有的。

set @type_id := 1;
set @username := 'somecompany';
set @password := 'company1234';
set @prefix := 'somecompany';

CREATE OR REPLACE VIEW CONCAT(@prefix, '_report') AS
SELECT * FROM my_table
WHERE type_id = @type_id;


这将不起作用,因为它不在为视图名称寻找字符串。我通过使用以下语句创建用户来解决这个问题:

INSERT INTO mysql.user (Host, User, Password) VALUES ('%', @username, PASSWORD(@password));


我可以使用类似的技巧来创建视图并将这些视图上的选择授予我创建的用户吗?

最佳答案

您可以使用Prepared Statements执行此查询。只需将查询构造为字符串,然后使用准备好的语句运行查询即可。



编辑

MySQL 5.5.12日志

SET @s = 'CREATE  VIEW view_actor AS SELECT * FROM sakila.actor;';
PREPARE stmt2 FROM @s;
EXECUTE stmt2;
DEALLOCATE PREPARE stmt2;


-- Check CREATE VIEW
SHOW CREATE VIEW view_actor;

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`%` SQL SECURITY DEFINER VIEW `view_actor` AS select `sakila`.`actor`.`actor_id` AS `actor_id`,`sakila`.`actor`.`first_name` AS `first_name`,`sakila`.`actor`.`last_name` AS `last_name`,`sakila`.`actor`.`last_update` AS `last_update` from `sakila`.`actor`

10-08 00:16