如何在名称中使用用户变量创建mysql视图

时间:2011-12-15 23:30:52

标签: mysql variables view grant

我正在使用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));

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

1 个答案:

答案 0 :(得分:0)

您可以使用Prepared Statements执行此查询。只需将查询构造为字符串并使用预准备语句运行它。


修改

MySQL 5.5.12-log

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`