所以這裏是代碼:無法創建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