首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将DROP用户和DROP数据库与SELECT .哪里查询?

问将DROP用户和DROP数据库与SELECT .哪里查询?
EN

Stack Overflow用户
提问于 2012-09-09 19:58:16
回答 2查看 891关注 0票数 3

我想做一件很简单的事,安装脚本。我的问题是,在MySQL中是否有一种简单的内置方式将SELECT查询的输出与DROP用户或database脚本的输入结合起来?

例如,如果我想删除所有密码为空的用户。我怎么能用DROP语句来做到这一点呢?我知道一个明显的解决方案是运行所有的东西,例如从Python脚本中运行,

  1. 使用mysql -Bse "select..."运行查询
  2. 用一些程序解析输出
  3. 构造drop查询
  4. 快跑啊。

在一个简单的SQL查询中是否有一种简单的方法?我在这里看到了一些例子,但我不认为它很简单:https://stackoverflow.com/a/12097567/518169

您建议进行组合查询,还是只使用Python或bash脚本/sed解析输出?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-09 21:34:27

您可以动态构建SQL,例如:

代码语言:javascript
复制
SELECT CONCAT('DROP USER ', GROUP_CONCAT(QUOTE(User), '@', QUOTE(Host)))
INTO   @sql
FROM   mysql.user
WHERE  PASSWORD = ''

然后从它获得准备一份声明:

代码语言:javascript
复制
PREPARE stmt FROM @sql

然后执行该语句:

代码语言:javascript
复制
EXECUTE stmt

最后,释放准备好的语句:

代码语言:javascript
复制
DEALLOCATE PREPARE stmt
票数 4
EN

Stack Overflow用户

发布于 2018-12-11 13:37:20

我的解决方案是使用--skip-column-names标志并将SELECT CONCAT(..)查询的输出返回到另一个mysql会话:

代码语言:javascript
复制
echo 'select concat("DROP USER ",user,"@\"",host,"\";") from mysql.user where User = "alex"' \
| mysql -uroot --skip-column-names \
| mysql -uroot

源https://stackoverflow.com/a/47902078/410939

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12342448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档