Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java在mysql中创建用户_Java_Mysql_Mysql Connector_Grant - Fatal编程技术网

使用java在mysql中创建用户

使用java在mysql中创建用户,java,mysql,mysql-connector,grant,Java,Mysql,Mysql Connector,Grant,在以root用户身份登录后,我在MySQL的命令行客户端中键入: connect mydb; grant all privileges on mydb.* to 'admin'@'localhost' identified by 'pass'; 现在在Java中, 我使用管理员用户ID和驱动程序成功地连接到数据库 Statement put=connect.createStatement(); //**WORKS succesfully** put.execute("insert in

在以root用户身份登录后,我在MySQL的命令行客户端中键入:

connect mydb;
grant all privileges on mydb.* to 'admin'@'localhost' identified by 'pass';
现在在Java中, 我使用管理员用户ID和驱动程序成功地连接到数据库

 Statement put=connect.createStatement();

 //**WORKS succesfully**
 put.execute("insert into mydb.emp values(100,joe)");   

 //**does NOT work**
 put.execute("grant all privileges on mydb.* to 'john'@'localhost' identified by 'pass'"); 
为什么insert命令可以工作,而grant命令却不能通过Java工作


请帮忙。

你刚才忘了引号

put.execute(MySQL query) 
在这里,您只能执行MySQL查询,但

grant all privileges on mydb.* to 'admin'@'localhost' identified by 'pass';
不是MySQL查询,它只是MySQL的一个命令。

尝试以下操作

put.execute("grant all privileges on mydb.* to 'john'@'localhost' identified by 'pass'"); 

还要确保您已将ANSISQL标志扩展为1。

我尝试使用查询参数-我发现有点混淆,例如,您必须在参数和@localhost之间设置一个空格-这对我来说很有效:(这里的jpaEm是JPAEEntityManager)


我马上看到的一件事是,您的INSERT查询是一个字符串,而GRANT查询不是。@Xperiaz X作为根,例如,您的意思是从linux终端?并非所有数据库都支持通过JDBC执行DDL命令,因此,您可能根本无法通过JDBC修改数据库结构。否要在windows中输入sql命令行客户端,我们需要输入根密码。MySQL根目录不是linux根目录。MySQL支持DDL吗?或者需要一个新的驱动程序?我的错,在代码中我放了引号,但在这里我忘了键入it@XperiazX那样的话,你应该看看我的答案。检查ExtendeDanisql标志哦,我明白了。那么,是否可以通过java向MySQL发送命令?您必须通过MySQL管理终端(命令行)设置用户权限?是否不能使用java?我的应用程序正在添加一个雇员(从而添加一个DB用户)。然后,该员工可以访问数据库中的其他表。您不能通过java为MySQL用户设置权限。是的,最后我实现了它。对于我的程序,我们可以通过java设置除grant选项之外的所有特权,只要我们有根id和密码。不管怎样,这个答案真的帮了我很大的忙。谢谢:)对不起,在代码中我放了引号,但我忘了在这里键入。extendedanisql标志?请告诉我是什么?
// Create user
String sql = "CREATE USER ? @localhost";
Query query = jpaEm.createNativeQuery(sql);
query.setParameter(1, user.getUserName());
jpaEm.getTransaction().begin();
query.executeUpdate();
jpaEm.getTransaction().commit();

// Set password
sql = "SET PASSWORD FOR ? @localhost = PASSWORD(?)";
query = jpaEm.createNativeQuery(sql);
query.setParameter(1, user.getUserName()); 
query.setParameter(2, user.getPassword());
jpaEm.getTransaction().begin();
query.executeUpdate();
jpaEm.getTransaction().commit();