【问题标题】:How to create a new user for MySQL with Java?如何使用 Java 为 MySQL 创建新用户?
【发布时间】:2017-05-19 07:08:19
【问题描述】:

我想从 NetBeans 为 MySQL 数据库创建一个新用户,但我不知道它的核心代码。

我试过了:

try {

    String query = "CREATE USER = '?' @'localhost' IDENTIFIED BY = '?'; ";

    con = DriverManager.getConnection(url, uname, pwd);
    PreparedStatement pstmnt = con.prepareStatement(query);

    pstmnt.setString(1, newUser[0]);
    pstmnt.setString(2, newUser[3]);

    pstmnt.execute();
    pstmnt.close();

} catch (SQLException ex) {
    ex.printStackTrace();
}

输出是:

java.sql.SQLException: 
Parameter index out of range (1 > number of parameters, which is 0).

我知道在 MySQL 中您可以使用以下方法创建新用户:

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';

【问题讨论】:

  • 您的问题到底是什么?基于此,您准备好的语句语法是错误的:docs.oracle.com/javase/7/docs/api/java/sql/…
  • 你想用netbeans在mysql中创建一个新表吗?
  • 你至少试过这个代码吗?输出是什么?
  • @AluanHaddad,我想我会使用类似的代码
  • @geunhter 是的,我有

标签: java mysql netbeans


【解决方案1】:

TimSolo How To have Dynamic SQL in MySQL Stored Procedure 表示 5.0.13 之后,在存储过程中,可以使用

dynamic sql 

Omesh MySQL CREATE USER with a variable? 使用动态 SQL 创建新用户并授予权限

我的混合物使用

stored procedures + dynamic sql

为创建新用户生成以下答案:

CREATE DEFINER=`root`@`localhost` PROCEDURE `new_procedure`(IN username VARCHAR(250), IN pwd VARCHAR (100))
BEGIN

SET @s = CONCAT('CREATE USER "',username,'"@"localhost" IDENTIFIED BY "',pwd,'"');
PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END

【讨论】:

    猜你喜欢
    • 2013-07-08
    • 1970-01-01
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    相关资源
    最近更新 更多