1

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

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

4

1 回答 1

1

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


编辑

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`
于 2011-12-16T07:32:31.477 回答