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: Access denied for user '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_java没有被授权从主机连接jamesposse.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'

要从 Internet 上的任何位置授予访问权限,请'%'用作主机:

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

这可能是关于redhat 密码问题的mysql。我不确定为什么它没有使用您提供的用户名,除非您实际上没有使用:

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

并使用 dcsoft_dcsoft_java 作为您的用户名。你能提供更多关于你的环境的细节吗?在mysql中确保你有whateverUserNameYourUsing@%,否则你会得到这个错误。您也可以将 % 替换为 IP 地址和/或域名,但它必须是您的数据库允许访问的每个域名。

于 2012-06-06T23:01:42.077 回答