首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何写“创建用户?”with MySQL prepared语句

问如何写“创建用户?”with MySQL prepared语句
EN

Stack Overflow用户
提问于 2013-12-18 07:56:13
回答 1查看 1.5K关注 0票数 3

我试过了:

代码语言:javascript
复制
SET @user = 'foo@localhost';
SET @pass = 'bar';
SET @sql = 'CREATE USER ? IDENTIFIED BY ?';
PREPARE stmt FROM $sql;

我得到了错误

代码语言:javascript
复制
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? IDENTIFIED BY ?'

我也尝试了多种不同的变量定义方式,但仍然一无所获。

代码语言:javascript
复制
SET @user = "'foo'@'localhost'";
SET @sql = 'CREATE USER ? IDENTIFIED BY ?';

甚至

代码语言:javascript
复制
SET @user = 'foo';
SET @host = 'localhost';
SET @sql = 'CREATE USER ?@? IDENTIFIED BY ?';

类似的问题在两年多前就已经被问过了,但仍然没有有用的答案:( Create User with MySQLi Prepared Statement

EN

回答 1

Stack Overflow用户

发布于 2013-12-18 08:58:31

这是我创建用户的唯一方法,不幸的是它没有为用户变量使用占位符:

代码语言:javascript
复制
SET @user := 'foo';
SET @host := 'localhost';
SET @pass := 'bar';
SET @sql := CONCAT("CREATE USER ", QUOTE(@user), "@", QUOTE(@host), " IDENTIFIED BY ", QUOTE(@pass));
PREPARE stmt FROM @sql;
EXECUTE stmt;

P.S.应从MySQL 5.1.12开始支持{CREATE | RENAME | DROP} USER语句

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

https://stackoverflow.com/questions/20647115

复制
相关文章

相似问题

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