【问题标题】:Rails: Cannot connect to remote MySQL databaseRails:无法连接到远程 MySQL 数据库
【发布时间】:2015-05-21 19:06:56
【问题描述】:

我的远程数据库连接有问题。

步骤,我做了:

1) 在 GemFile 中添加:

gem 'mysql2'

2) 在database.yml中:

development:
adapter: mysql2
database: myname
username: myuser
password: mypass
host: myhost.nazwa.pl
port: 3305 

3) 然后在控制台中输入:

rake db:migrate

我得到的通讯:

Mysql2::Error: Can't connect to MySQL server on 'myhost.nazwa.pl' (4)

我想试试我是否可以使用小的 php 脚本连接到这个数据库:

<?php 
$host = 'myhost.nazwa.pl';
$database = 'myname';
$username = 'myuser';
$password = 'mypass';

if ( mysql_connect($host,$username,$password) ) {
echo 'connect to mysql server *** ';
}

if ( mysql_select_db($database) ) {
echo 'open database';
}

if ( !mysql_close() ) {
echo 'cannot close connection';
exit (0);
}
?> 

而且没有问题。我可以连接、创建表格、添加数据等。

你能给我一些建议吗?哪里可能有问题?我将非常感激。 问候:)

【问题讨论】:

  • 我没有看到您在 PHP 脚本中指定端口。默认 MySQL 端口是 3306,而不是您在 database.yml 中指定的 3305
  • 貌似唯一的区别是端口号,默认是3305吗?
  • 看起来它在 3305 和 3306 上都可以监听(以后可能需要防火墙)。您的 database.yml 是否有缩进的键,或者它们都在同一级别。
  • 我从 databyse.yml 中删除了端口。问题依然存在。但是当我登录到 mysql.nazwa.pl 时,有信息:Serwer: myhost.nazwa.pl:3305 我已经打算在 database.yml
  • php脚本和rails/ruby是在同一台机器上吗?如果您打开命令提示符(在 rails 机器上)并且 telnet myhost.nazwa.pl 3305 它会连接/显示任何内容

标签: mysql ruby-on-rails ruby database


【解决方案1】:

MySQL 的默认端口是 3306,并且出于某种原因,您的配置中有 3305。除非您使用自定义端口,否则请将 port: 参数保留在配置文件之外。

【讨论】:

  • 感谢您的超快速响应。不幸的是,这并不能解决我的问题。当登录到 phpmyadmin 我有信息:Serwer: myhost.nazwa.pl:3305
  • 如果 PHP “正常工作”并且您没有在某处输入“3305”,那么我会说您误读了 phpmyadmin。
  • @lukast008 这没有在您的 PHP 配置中指定,所以我不确定它是如何工作的。您是否尝试过使用MySQL Workbench 或命令行mysql 工具连接?您是否在同一台服务器上使用 PHP 和 Ruby 进行测试?
  • 不,我从本地主机测试 Ruby,但 php 在远程服务器上。感谢所有的答案。我想我会尝试将我的应用程序部署到服务器并重试。
  • 这可能是因为您根本不允许远程连接到您的 MySQL 服务器。通常这是一件好事,因为让你的 MySQL 端口打开是自找麻烦。如果 Ruby 代码使用与 PHP 代码相同的配置,那么它应该可以在服务器上运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 2012-10-09
  • 2014-08-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多