我可以在由mysql提供的sql脚本中切换“已连接”用户吗?

时间:2011-08-18 21:56:26

标签: mysql

我想知道是否可以在mysql执行的sql脚本中切换“已连接”用户。

这是我的目标描述。也许,没有必要改变用户,另一个解决方案给了我想要的东西。

我想写一个数据库创建脚本,如下所示:

create databse some_db;

create user u@localhost identified by 'pw';

grant all on u.* to u;

-- Here's where I want to switch the user, but *obviously* the 
-- following command fails

connect u@localhost/pw;

-- Now, as new user, create the tables:

use some_db;

create table t (...

然后从命令行调用此脚本,如

$ mysql -u root -p"....." < create_db.sql

这是可能还是我必须离开脚本才能切换连接的用户?

2 个答案:

答案 0 :(得分:2)

AFAIK,除非您使用其他用户的凭据创建全新的连接,否则无法在脚本中间更改用户。

BTW,connect命令只重新连接,但只有两个可选参数作为文档状态:db和host。

答案 1 :(得分:0)

我不知道从SQL脚本中切换用户的常规方法。

不规则可能是stored procedure的使用或table triggers的使用。两者都允许设置DEFINER。因此,您可以尝试将“特殊用户代码”放入存储过程或触发器,调用存储过程或触发触发器并执行代码。

即使这不起作用,您也需要一个脚本:

#!/bin/sh -eu
mysql --host localhost --user root --password root_pw < create_user.sql
mysql --host localhost --user u --password pw < create_table.sql