所以这里是代码:无法创建MySQL数据库,使用JDBC驱动
**package com.install.main;
import java.sql.*;
public class Executor {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost/";
// Database credentials
static final String USER = "eli";
static final String PASS = null;
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try{
//STEP 2: Register JDBC driver
Class.forName("com.mysql.jdbc.Driver");
//STEP 3: Open a connection
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL, USER, PASS);
//STEP 4: Execute a query
System.out.println("Creating database... ");
stmt = conn.createStatement();
System.out.println("Connection: " + conn);
String sql = "CREATE DATABASE STUDENTS";
stmt.executeUpdate(sql);
System.out.println("Database created successfully... ");
}catch(SQLException se){
//Handle errors for JDBC
se.printStackTrace();
}catch(Exception e){
//Handle errors for Class.forName
e.printStackTrace();
}finally{
//finally block used to close resources
try{
if(stmt!=null)
stmt.close();
}catch(SQLException se2){
}// nothing we can do
try{
if(conn!=null)
conn.close();
}catch(SQLException se){
se.printStackTrace();
}//end finally try
}//end try
System.out.println("Goodbye!");
}//end main
}//end JDBCExample**
,这里是输出:
Connecting to database...
Creating database...
Connection: [email protected]
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Access denied for user ''@'localhost' to database 'STUDENTS'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
at com.mysql.jdbc.Util.getInstance(Util.java:387)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:939)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3878)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2478)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2625)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2547)
at com.mysql.jdbc.StatementImpl.executeUpdateInternal(StatementImpl.java:1541)
at com.mysql.jdbc.StatementImpl.executeLargeUpdate(StatementImpl.java:2605)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1469)
at com.install.main.Executor.main(Executor.java:34)
Goodbye!
是否有人对你碰巧知道为什么它会尝试连接到我刚刚创建的数据库,为什么它实际上不创建数据库?我没有为mysql设置任何密码。
如果我执行thisstatement:
GRANT ALL PRIVILEGES ON . TO 'eli'@'localhost' IDENTIFIED BY 'eli' WITH GRANT OPTION;
,我也得到了同样的错误,他说:
05:43:15 GRANT ALL PRIVILEGES ON . TO 'eli'@'localhost' IDENTIFIED BY 'eli' WITH GRANT OPTION Error Code: 1045.
的思考是,如果我在控制台输入mysql命令 - 它会以[email protected]
的身份登录,而不会提供任何用户名或密码......我在Ubuntu上 - 这是指我在计算机上的用户名,但错误仍在 - 我什么也做不了。
如果在命令行中执行此mysql> select * from information_schema.user_privileges;
:
这是我所看到的:
+----------------+---------------+----------------+--------------+ | GRANTEE | TABLE_CATALOG | PRIVILEGE_TYPE | IS_GRANTABLE | +----------------+---------------+----------------+--------------+ | ''@'localhost' | def | USAGE | NO | +----------------+---------------+----------------+--------------+ 1 row in set (0.00 sec)
...但如果我这样做select user();
:
+---------------+ | user() | +---------------+ | [email protected] | +---------------+ 1 row in set (0.00 sec)
我试过使用sudo dpkg-reconfigure mysql-server-5.5
但它从未要求我输入新密码 - 刚刚重新启动我的服务器,就是这样。
对不起,这是怎么回事?
'user''@'localhost''好像'USER'没有保存你认为它的值(“eli”) –
@TylerSebastian不,更可能是''eli'@'localhost''确实不存在于MySQL服务器上,所以他以'''@'localhost''(any_user [at] localhost)登录。 –
如果我执行此声明:“将所有特权授予*。*到'eli'@'localhost'IDENTIFIED BY'eli'WITH GRANT OPTION;”在MySQL Wrokbench中,我也遇到同样的错误,说:“05:43:15 \t授予*。*到'eli'@'localhost'IDENTIFIED BY'eli'授予选项\t错误代码:1045访问权限拒绝用户'@'本地主机'“ – user3253253