この状態で 『java mysqltest』を実行すると 以下のようなエラーが出力されます。 ――――――――――――――――――― java.lang.ClassNotFoundException: com.mysql.jdbc.Driver at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:164) at mysqltest.main(mysqltest.java:8) ――――――――――――――――――― エラーの1行目の「java.lang.ClassNotFoundException: com.mysql.jdbc.Driver」は クラスが無いことをあらわすエラーであることは なんとなくわかっているのですが パスも通しているしどうしてこのエラーが出るか わからない状態にあります。
教えていただいた4つのコマンドの中の一番最後の
『java -cp /usr/local/jdbc/mysql-connector-java-3.1.11-bin.jar:$CLASSPATH mysqltest』
を打ったとき、以下のようなエラーが吐き出されました
――――――――――――――――――――――――
java.sql.SQLException: null, message from server: "Host 'localhost.localdomain' is not allowed to connect to this MySQL server"
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:991)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2544)
at com.mysql.jdbc.Connection.<init>(Connection.java:1474)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
at java.sql.DriverManager.getConnection(DriverManager.java:525)
at java.sql.DriverManager.getConnection(DriverManager.java:193)
at mysqltest.main(mysqltest.java:15)
――――――――――――――――――――――――
そして以下のように教えていただいた通りソースを書き換えてコンパイルして実行したところ以下のエラーが出力されました。
―――――――――――――――――――――――――――
String url = "jdbc:mysql:///hellodb?useUnicode=true&characterEncoding=SJIS";
Connection con = DriverManager.getConnection(url,"root","****");
―――――――――――――――――――――――――――
java.sql.SQLException: null, message from server: "Host 'localhost.localdomain' is not allowed to connect to this MySQL server"
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:991)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2544)
at com.mysql.jdbc.Connection.<init>(Connection.java:1474)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
at java.sql.DriverManager.getConnection(DriverManager.java:525)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at mysqltest.main(mysqltest.java:17)
―――――――――――――――――――――――――――
>テステスさん
mysqlのバージョンは『4.0.24』を使っています。
テステスさんに教えていただいた書き方で
――――――――――――――――――――――――――
String url = "jdbc:mysql:///hellodb?useUnicode=true&characterEncoding=SJIS&user=root&&password=****";
――――――――――――――――――――――――――
↑のように書き換えてコンパイル後実行したところ
以下のエラーが出力されました。。。
――――――――――――――――――――――――――
java.sql.SQLException: null, message from server: "Host 'localhost.localdomain' is not allowed to connect to this MySQL server"
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:991)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2544)
at com.mysql.jdbc.Connection.<init>(Connection.java:1474)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
at java.sql.DriverManager.getConnection(DriverManager.java:525)
at java.sql.DriverManager.getConnection(DriverManager.java:193)
at mysqltest.main(mysqltest.java:21)
――――――――――――――――――――――――――
――――――――――――――――――――――――――
//方法1-1
String url = "jdbc:mysql://localhost:3306/mysql?useUnicode=true&characterEncoding=SJIS";
Connection con = DriverManager.getConnection(url,"root","****");
//方法1-2
String url = "jdbc:mysql://localhost.localdomain:3306/mysql?useUnicode=true&characterEncoding=SJIS";
Connection con = DriverManager.getConnection(url,"root","****");
//方法2-1
String url = "jdbc:mysql://localhost:3306/mysql?useUnicode=true&characterEncoding=SJIS&user=root&password=****";
Connection con = DriverManager.getConnection(url);
//方法2-2
String url = "jdbc:mysql://localhost.localdomain:3306/mysql?useUnicode=true&characterEncoding=SJIS&user=root&password=****";
Connection con = DriverManager.getConnection(url);
――――――――――――――――――――――――――
先のアドバイスで教えてもらった標記方法の
4通りを全てためしてみました。
しかし以下のようなエラーが出ました。
――――――――――――――――――――――――――
java.sql.SQLException: Access denied for user: 'root@localhost.localdomain' (Using password: YES)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2926)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:771)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1229)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2544)
at com.mysql.jdbc.Connection.<init>(Connection.java:1474)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
at java.sql.DriverManager.getConnection(DriverManager.java:525)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at mysqltest.main(mysqltest.java:22)
――――――――――――――――――――――――――
以下のような結果が出力されました・・・。
―――――――――――――――――――――――
|user1_name|user1@mail.com|user1_data|
|user2_name|user2@mail.com|user2_data|
java.sql.SQLException: Access denied for user 'root'@'localhost.localdomain' to database 'mysql'
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2926)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2972)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2902)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:929)
at mysqltest.main(mysqltest.java:44)
―――――――――――――――――――――――
ちなみにlistテーブルの中身は
―――――――――――――――――――――――
+------------+----------------+------------+
| NAME | MAIL | DATA |
+------------+----------------+------------+
| user1_name | user1@mail.com | user1_data |
| user2_name | user2@mail.com | user2_data |
+------------+----------------+------------+
―――――――――――――――――――――――
見ていただければわかるとおり
「select * from list」でDB内のものを参照できるのに
「INSERT INTO list」によるDB内への登録がなぜか
『Access denied』となります。。。
「Select * from list」のほうにもエラーが出るなら
設定がおかしかったりパスワードの設定の仕方が違うなどが
考えられますが。Selectがうまく動いてInsertが動かないのは
何が原因か検討がつきません・・・