![RHEL 6 中的 mysql jdbc 连接问题](https://linux22.com/image/40230/RHEL%206%20%E4%B8%AD%E7%9A%84%20mysql%20jdbc%20%E8%BF%9E%E6%8E%A5%E9%97%AE%E9%A2%98.png)
我已mysql
在其中一台 RHEL 6 服务器中设置了数据库。我想使用java
程序从任何其他计算机连接到该服务器的数据库。我该怎么做呢?
答案1
设置类路径
JDBC 连接器将位于路径中/usr/share/java/
。我们可以出口类路径作为,
export CLASSPATH=/usr/share/java/mysql-connector-java.jar:$CLASSPATH
授予用户权限
对于连接数据库的用户,应该授予权限。这可以使用以下mysql
查询来实现。
GRANT ALL PRIVILEGES ON *.* TO ‘user’@’%’ IDENTIFIED BY ‘<user-password>’ WITH GRANT OPTION;
现在,我们可以使用 java 程序建立与该计算机服务器的连接,mysql
但只能作为localhost
.如果我们需要使用该服务器的名称或从其他计算机进行连接,我们将得到几个异常,如所讨论的这里和这里。
编辑/etc/hosts
文件
需要注意的是,在上面的步骤中,如果我只使用机器的 IP 地址而不是机器的主机名,它就可以工作。所以,我怀疑这个问题与dns
名称解析有关。
我修改了我的/etc/hosts
文件以包含以下条目。
127.0.0.1 servername.edu localhost
我仍然无法使用主机名连接到数据库,考虑到我/etc/hosts
也更改了文件,我认为这很奇怪。我什至停下来ip6tables
检查这是否是问题所在。然而,所有选项都不起作用,这给了我一个例外,因为,
ERROR: java.net.UnknownHostException:connection refused
编辑/etc/my.cnf文件
最后一个例外是有希望的。它说连接被拒绝,而不是说无法解析主机名之类的内容。因此,我认为应该更改/etc/my.cnf
文件中的某些内容,并将以下几行添加到文件中。
port=3306
bind-address=0.0.0.0
当我进行上述更改时,我可以使用主机名从任何地方连接到这台计算机。