質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

5965閲覧

javaでのmariaDB,mysqlの接続ができない

boobooboo

総合スコア12

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2018/09/09 12:29

質問です。
javaでmysqlに接続したのですが、エラーが起きます

コードは以下の通りです。

package sample;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Testdata2 { public static void main(String[] args) { /* 事前準備(JAR配置を含む) */ try { Class.forName("com.mysql.cj.jdbc.Driver"); } catch (ClassNotFoundException e) { //JDBCドライバが見つからない場合の処理 e.printStackTrace(); } Connection con = null; try { /* データベースの接続 */ // JDBC URLを指定 con = DriverManager.getConnection("jdbc:mysql://”自分のIPアド”:3306/goods","root",""); /* SQL送信完了 */ /**************************/ PreparedStatement pstmt = con.prepareStatement("SELECT * FROM employees WHERE salary >= ?" ); pstmt.setInt(1,300000); ResultSet rs = pstmt.executeQuery(); //行が見つかればtrueが返る if(rs.next()) { System.out.println(rs.getInt("salary")); } else { System.out.println("該当データは存在しません"); } rs.close(); pstmt.close(); //SQLを実行 //メインのDB操作処理 /**************************/ } catch (SQLException e) { // 接続や、SQL処理の失敗時の処理 e.printStackTrace(); } finally { /* データベース接続の切断 */ if (con != null) { try { con.close(); } catch (SQLException e) { //接続失敗時の処理 e.printStackTrace(); } } } } }

エラー表示は以下の通りです。

java.sql.SQLException: null, message from server: "Host 'peanuts' is not allowed to connect to this MariaDB server"
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:832)
at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:456)
at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:240)
at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:207)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at sample.Testdata2.main(Testdata2.java:37)

サーバーのアクセス権限がないといわれるのですが、新たに設定しないと接続できないのでしょうか。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

MySQL(MariaDB)でリモートから接続するためには2つ設定が必要です。

まずは、/etc/mysql/my.cnfのbind-addressの設定

bind-address = 127.0.0.1

となっていた場合は、DBサーバー自身からしかアクセスできないのでコメントつけて

#bind-address = 127.0.0.1

とした後にDBを再起動します。

もう一つはユーザーの設定、MySQLはユーザー単位にどのようなアクセスを許可するか制限(ローカルからしか接続できないとか、リモートからも接続できるとか)をかけられます。

grant all privileges on *.* to MySQLユーザー@'%'; flush privileges;

とすると @前に指定したユーザーはリモートのどこからでも接続できます。

あとは、OSのファイアウォールの設定でしょうか? 3306で通信できるようにする必要があります。

投稿2018/09/09 12:54

euledge

総合スコア2404

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

boobooboo

2018/09/09 13:05

すいません。ありがとうございます。自己解決して申し訳ございません。URLを127.0.0.1に変更して打ったら、timezoneというエラーがでました。なのでエラーをググり、解決する構文を打ったら無事アクセスできました。
guest

0

自己解決

すいません解決しました。
localhostにして、timezoneとでたので
それをふせぐ構文を打ったら接続できました。
申し訳ございません。

投稿2018/09/09 12:50

boobooboo

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問