开发者社区> 问答> 正文

durid 不支持非默认端口号的数据库连接?

我在一台服务器上创建了两个mysql数据库,一个端口号3306,一个3300,3306连接成功,3300无法连接。1,navicat 两个端口数据库都能连接 2,自己使用jdbc两个端口数据库都能连接 3 测试过程中,发现无论我端口号配置什么数字,只要我密码填写为3306数据库的密码,那就能直接连上3306,这代表端口号配置没有意义?如果我想连接各种非默认端口号数据库我该怎么配置?

原提问者GitHub用户whlq

展开
收起
山海行 2023-07-05 19:38:24 71 0
4 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    默认情况下,Druid是支持指定端口号建立数据库连接的。

    你可以在数据库URL中指定port参数,指定端口号。例如:

    MySQL: jdbc:mysql://ip:port/dbname

    Oracle: jdbc:oracle:thin:@host:port:sid

    PostgreSQL: jdbc:postgresql://host:port/dbname

    SQL Server: jdbc:sqlserver://host:port;databaseName=dbname

    也就是说,无论数据库使用的是否为默认端口,Druid都能建立连接。

    如果你碰到Druid不能连接非默认端口号数据库的问题,可能的原因有:

    数据库连接配置错误,写错了端口号

    没有开放数据库非默认端口号

    Druid和数据库不在同一网络中,非默认端口号无法访问

    Druid版本存在问题,有bug无法建立非默认端口连接

    需要做的是:

    验证数据库非默认端口号可以正常访问

    确认Druid连接URL中正确指定了端口号

    检查Druid和数据库是否在同一网络中

    尝试升级Druid版本

    2023-07-30 15:51:13
    赞同 展开评论 打赏
  • 确保在连接字符串中指定了正确的端口号、数据库名称、用户名和密码。这样可以确保您连接到正确的数据库实例。

    2023-07-11 09:39:42
    赞同 展开评论 打赏
  • 经过几天排查最后发现是 mysql-connector-java 5.1.9 这个版本依赖包内部的bug,只支持每种类型数据库的默认端口,我修改了版本号,问题解决,与durid无关,希望对遇到这个问题的朋友有用

    原回答者GitHub用户whlq

    2023-07-06 11:01:55
    赞同 展开评论 打赏
  • 在MySQL中,端口号是用于识别和区分不同的数据库实例的。默认情况下,MySQL使用3306作为端口号。如果您创建了一个使用非默认端口号的数据库实例(如3300),那么连接该数据库需要指定正确的端口号。

    根据您的描述,Navicat和自己使用JDBC连接都能成功连接到3300端口的数据库,这说明您已经正确地配置了端口号。那么为什么在测试过程中填写3306端口的密码也能连接上呢?

    可能的原因是,在您的服务器上,3300端口与3306端口共享了相同的MySQL进程或者配置文件。这导致当您使用3306端口的密码连接时,实际上是连接到了共享的MySQL进程,而不是您预期的3300端口的数据库实例。

    要连接到非默认端口号的数据库实例,无论是使用命令行工具还是其他客户端工具,您都需要在连接字符串中指定正确的端口号。例如,对于使用3300端口的数据库实例,您可以在连接字符串中添加端口号参数,类似于jdbc:mysql://localhost:3300/database_name

    确保在配置连接时,端口号与要连接的数据库实例的端口号一致,并且没有与其他共享进程或配置冲突。

    2023-07-05 19:47:52
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
DTCC 2022大会集锦《云原生一站式数据库技术与实践》 立即下载
阿里云瑶池数据库精要2022版 立即下载
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载