我想知道是否可以在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
这是可能还是我必须离开脚本才能切换连接的用户?
答案 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