0

mysqlデータベースをJavaのJDBCに接続しようとすると、Webサーバーに接続されません。

これがコードです

String dbtime;
String dbUrl = "jdbc:mysql://184.172.176.18:3306/dcsoft_dcsoft_balloon";
String dbUser = "myuser";
String dcPass = "mypass";
String dbClass = "com.mysql.jdbc.Driver";
String query = "Select * FROM users";

try {

    Class.forName("com.mysql.jdbc.Driver");
    Connection con = DriverManager.getConnection(dbUrl, dbUser, dcPass);
    Statement stmt = con.createStatement();
    ResultSet rs = stmt.executeQuery(query);

    while (rs.next()) {
        dbtime = rs.getString(1);
        System.out.println(dbtime);
    } 

    con.close();

} catch(ClassNotFoundException e) {
    e.printStackTrace();
} catch(SQLException e) {
    e.printStackTrace();
}

このコードは私のWebサーバーに送信されるはずですが、このエラーが発生しますjava.sql.SQLException:ユーザー'dcsoft_dcsoft_java' @'jamesposse.force9.co.uk'のアクセスが拒否されました(パスワードを使用:YES)

jamesposse.force9.co.ukは、接続しようとしているアドレスではありません。184.172.176.18:3306に接続しようとしています。

ありがとう。


ホストファイルの内容は-

# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

# localhost name resolution is handled within DNS itself.
#    127.0.0.1       localhost
#   ::1             localhost

そしてlmhostsは-

# Copyright (c) 1993-1999 Microsoft Corp.
#
# This is a sample LMHOSTS file used by the Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to computernames
# (NetBIOS) names.  Each entry should be kept on an individual line.
# The IP address should be placed in the first column followed by the
# corresponding computername. The address and the computername
# should be separated by at least one space or tab. The "#" character
# is generally used to denote the start of a comment (see the exceptions
# below).
#
# This file is compatible with Microsoft LAN Manager 2.x TCP/IP lmhosts
# files and offers the following extensions:
#
#      #PRE
#      #DOM:<domain>
#      #INCLUDE <filename>
#      #BEGIN_ALTERNATE
#      #END_ALTERNATE
#      \0xnn (non-printing character support)
#
# Following any entry in the file with the characters "#PRE" will cause
# the entry to be preloaded into the name cache. By default, entries are
# not preloaded, but are parsed only after dynamic name resolution fails.
#
# Following an entry with the "#DOM:<domain>" tag will associate the
# entry with the domain specified by <domain>. This affects how the
# browser and logon services behave in TCP/IP environments. To preload
# the host name associated with #DOM entry, it is necessary to also add a
# #PRE to the line. The <domain> is always preloaded although it will not
# be shown when the name cache is viewed.
#
# Specifying "#INCLUDE <filename>" will force the RFC NetBIOS (NBT)
# software to seek the specified <filename> and parse it as if it were
# local. <filename> is generally a UNC-based name, allowing a
# centralized lmhosts file to be maintained on a server.
# It is ALWAYS necessary to provide a mapping for the IP address of the
# server prior to the #INCLUDE. This mapping must use the #PRE directive.
# In addtion the share "public" in the example below must be in the
# LanManServer list of "NullSessionShares" in order for client machines to
# be able to read the lmhosts file successfully. This key is under
# \machine\system\currentcontrolset\services\lanmanserver\parameters\nullsessionshares
# in the registry. Simply add "public" to the list found there.
#
# The #BEGIN_ and #END_ALTERNATE keywords allow multiple #INCLUDE
# statements to be grouped together. Any single successful include
# will cause the group to succeed.
#
# Finally, non-printing characters can be embedded in mappings by
# first surrounding the NetBIOS name in quotations, then using the
# \0xnn notation to specify a hex value for a non-printing character.
#
# The following example illustrates all of these extensions:
#
# 102.54.94.97     rhino         #PRE #DOM:networking  #net group's DC
# 102.54.94.102    "appname  \0x14"                    #special app server
# 102.54.94.123    popular            #PRE             #source server
# 102.54.94.117    localsrv           #PRE             #needed for the include
#
# #BEGIN_ALTERNATE
# #INCLUDE \\localsrv\public\lmhosts
# #INCLUDE \\rhino\public\lmhosts
# #END_ALTERNATE
#
# In the above example, the "appname" server contains a special
# character in its name, the "popular" and "localsrv" server names are
# preloaded, and the "rhino" server name is specified so it can be used
# to later #INCLUDE a centrally maintained lmhosts file if the "localsrv"
# system is unavailable.
#
# Note that the whole file is parsed including comments on each lookup,
# so keeping the number of comments to a minimum will improve performance.
# Therefore it is not advisable to simply add lmhosts file entries onto the
# end of this file.
4

2 に答える 2

4

jamesposse.force9.co.uk接続元のマシンです。

MySQL が不平を言う場合、ユーザーがホストからの接続を許可されていないAccess denied for user 'dcsoft_dcsoft_java'@'jamesposse.force9.co.uk'ことを意味します。dcsoft_dcsof_javajamesposse.force9.co.uk

MySQL では、接続しようとしているユーザー名と、接続しようとしているホスト名によって認証されます。これが、次のようなユーザーにアクセスを許可する理由です。

grant access to 'dcsoft_dcsoft_java'@'localhost' identified by 'whatever'

このユーザーは、MySQL サーバーと同じマシンからのみ接続できます (たとえば、同じマシンでホストされている webapps から、またはマシンに SSH 接続してmysqlそこからコマンドラインを使用する場合)。

特定のマシンへのアクセスを許可する場合は、ホスト名または IP アドレスで識別します。

grant access to 'dcsoft_dcsoft_java'@'184.172.176.18' identified by 'whatever'

インターネット上のどこからでもアクセスを許可するには'%'、ホストとして次を使用します。

grant access to 'dcsoft_dcsoft_java'@'%' identified by 'whatever'
于 2012-06-06T23:07:44.623 に答える
0

これは、mysql on redhat のパスワードの問題である可能性があります。実際に使用していない限り、提供しているユーザー名を使用していない理由はわかりません。

String dbUser = "myuser";
String dcPass = "mypass";

ユーザー名として dcsoft_dcsoft_java を使用します。あなたの環境についてもう少し詳しく教えていただけますか?mysql では、whateverUserNameYourUsing@% があることを確認してください。そうしないと、このエラーが発生します。% を IP アドレスやドメイン名に置き換えることもできますが、データベースがアクセスを許可するすべてのドメイン名にする必要があります。

于 2012-06-06T23:01:42.077 に答える