如何连接别人机器上的MySQL?

CrazyJavar 2003-04-22 10:14:38
程序应该不会有问题,连接本机是成功的,但是修改JDBC URL,以便连接别人的MySQL时出现错误

连接本机成功
但连接其他机器就失败
(ConnectionManager.java:76) - Caught an exception :
java.sql.SQLException: Invalid authorization specification: Access denied for user: 'root@localhost '(Using password: YES)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:652)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:1532)
at com.mysql.jdbc.Connection.<init>(Connection.java:486)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:326)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:172)
at com.utstar.osn.util.ConnectionManager.getConnection(ConnectionManager.java:68)
at com.utstar.osn.client.logview.LogDataService.getRows(LogDataService.java:153)
at com.utstar.osn.client.logview.LogDataService.main(LogDataService.java:34)

其中说Access denied for user: 'root@localhost '(Using password: YES)
很奇怪,我的JDBC URL已经指明了连接别人的数据库了阿,为什么还是出现这样的错误呢?

jdbc:mysql://别人的机器名/dbname?useUnicode=true&characterEncoding=gb2312


是不是要修改我机器上的MySQL设置?

...全文
578 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
CrazyJavar 2003-04-22
  • 打赏
  • 举报
回复
我是个Swing小程序去连接MySQL
CrazyJavar 2003-04-22
  • 打赏
  • 举报
回复
请问caven12345

如何加上要连接的机器IP呢
请详细说说
baitianhai 2003-04-22
  • 打赏
  • 举报
回复
你用的什么服务器?tomcat,是不是缓存的问题啊,你把缓存文件删除看看
caven12345 2003-04-22
  • 打赏
  • 举报
回复
要在mysql的user中加入要连接的机器ip.
CrazyJavar 2003-04-22
  • 打赏
  • 举报
回复
我是这么写的阿
java悠悠 2003-04-22
  • 打赏
  • 举报
回复
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:mysql://目标IP:3306/test","root","public");
baitianhai 2003-04-22
  • 打赏
  • 举报
回复
不会把,老兄,这个是两回事的
我不太明白你的用法是什么
一般是这样用的
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:mysql://192.168.0.22:3306/test","root","public");
CrazyJavar 2003-04-22
  • 打赏
  • 举报
回复
我记得好像是需要修改MySQL Admin里面my.ini一栏的

但是不知道怎么改了
CrazyJavar 2003-04-22
  • 打赏
  • 举报
回复
生成jdbc url如下

dbUrl = jdbc:mysql://192.168.0.22:3306/test?useUnicode=true&characterEncoding=gb2312

dbName = root

dbPassword = public

连接本机没有问题的

CrazyJavar 2003-04-22
  • 打赏
  • 举报
回复
public class ConnectionManager
{
private static ConnectionManager instance;

public static synchronized ConnectionManager getInstance()
{
if (null == instance)
{
instance = new ConnectionManager();
}

return instance;
}

public static void main(String[] args)
{
Connection con = ConnectionManager.getInstance().getConnection("test");
}
private Hashtable conns = new Hashtable();
private String dbDriver;
private String dbName;
private String dbPassword;
private String dbServer;

private String dbUrl;
private String dbUser;

private ConnectionManager()
{
}

public Connection getConnection(String dbN)
{
Connection conn = null;

if (null == conns.get(dbN))
{
this.intiDataBase(dbN);

try
{
try
{
Class.forName(dbDriver).newInstance();
}
catch (InstantiationException e)
{
LogManager.debugLog.debug("Caught an excpetion : ", e);
}
catch (IllegalAccessException e)
{
LogManager.debugLog.debug("Caught an excpetion : ", e);
}

conn = DriverManager.getConnection(dbUrl, dbUser, dbPassword);
}
catch (ClassNotFoundException e)
{
LogManager.debugLog.debug("Caught an excpetion : ", e);
}
catch (SQLException e)
{
LogManager.debugLog.debug("Caught an exception : ", e);
}

conns.put(dbN, conn);
}
else
{
conn = (Connection)conns.get(dbN);
}

try
{
if (conn.isClosed())
{
conns.remove(dbN);

conn = getConnection(dbN);
}
}
catch (SQLException e)
{
LogManager.debugLog.debug("Caught an exception : ", e);
}

return conn;
}

private void intiDataBase(String dbN)
{
dbUrl = PropertyManager.getInstance().getProperty("dbUrl");
dbServer = PropertyManager.getInstance().getProperty("dbServer");
dbDriver = PropertyManager.getInstance().getProperty("dbDriver");
dbName = dbN;
dbUser = PropertyManager.getInstance().getProperty("dbUser");
dbPassword = PropertyManager.getInstance().getProperty("dbPassword");

dbUrl = MiscToolkit.replaceSubString(dbUrl, "[dbServer]", dbServer);
dbUrl = MiscToolkit.replaceSubString(dbUrl, "[dbName]", dbName);


}
}
baitianhai 2003-04-22
  • 打赏
  • 举报
回复
把你的连接程序写出来

baitianhai 2003-04-22
  • 打赏
  • 举报
回复
你是怎么做的那?
CrazyJavar 2003-04-22
  • 打赏
  • 举报
回复
成功执行了你提供的SQL语句
但是错误依旧啊
郁闷
baitianhai 2003-04-22
  • 打赏
  • 举报
回复
hostname最好用IP地址
baitianhai 2003-04-22
  • 打赏
  • 举报
回复
首先进入 mysql 并以 root 登陆,随后输入如下内容。

mysql> GRANT ALL PRIVILEGES ON [dbname].* to '[user]'@'[hostname]'
 identified by '[password]';

(注意:这里将 dbname 替换成你的数据库名称,在 DateTest 中是 test;将 user 替换成你的用户名,笔者的是 root;将 hostname 替换成 java 程序运行时所在的机器,笔者是在本机运行,即为'localhost';将 password 替换成你mysql中用户的密码,笔者的没有密码,即为''。)

clapton 2003-04-22
  • 打赏
  • 举报
回复
用户名密码错了吧?
另外机器名->IP试试?
caven12345 2003-04-22
  • 打赏
  • 举报
回复
就如上面baitianhai(hong) 所说:
GRANT ALL PRIVILEGES ON *.*
TO name@'hostname';

name换成用户名
hostname换成机器ip
如果要限制权限的话,参考一下GRANT的用法
要用root进入名字为mysql数据库,运行以上命令。
qiuafa 2003-04-22
  • 打赏
  • 举报
回复
劫分 & 捧场

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧