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 に答える