如何在 ruby 中连接到远程数据库?
我有一个应用程序,我需要连接到我的远程主机数据库并读取这些数据库表并映射到我的应用程序中。
提前感谢您的帮助
你的问题不完整。你没有提到哪个数据库。我假设mysql。你也应该展示你的努力。
从http://tmtm.org/en/mysql/ruby/安装 mysql gem
gem install mysql
现在,在你的 ruby 文件中使用它。
db = Mysql.new(hostname, username, password, database)
例子:
require 'mysql'
db = Mysql.new('209.88.228.142', 'someuser', 'exceptionalpassword', 'greatdb')
将服务器的 IP 或主机放在主机名中。其余参数不言自明。您必须在远程服务器 mysql 主机中允许您的公共 IP 地址。例如,如果你的 IP 是 209.88.228.142,你必须在你的 mysql 服务器中允许这个 IP。
有关更多详细信息,请参阅文档。
允许您的 IP 在数据库服务器中。 假设上述 IP 是您的公共 IP,您可以使用以下命令允许访问您的greatdb数据库。在您的数据库服务器的控制台中运行它。
GRANT ALL ON greatdb.* TO someuser@'209.88.228.142' IDENTIFIED BY 'exceptionalpassword';
注意:将用户名、数据库名、密码、主机/IP 替换为适合您的值。
如果您使用的是 Rails:是的,这是可能的。对于大多数其他可能的驱动程序,请让我们知道您尝试了什么。
development:
adapter: mysql2
encoding: utf8
reconnect: false
database: name_of_databse
pool: 20
username: user
password: password
wait_timeout: 3600
host: name.of.server
port: 3306
您还应该注意到您可能想要连接的 mysql 允许远程访问。请检查您是否可以使用 db-tool(如 squirrel)或 mysql 客户端远程连接。
通常,mysql 数据库中的用户在 CREATE USER 语句中被限制为 localhost 或特定的远程主机,如下所示:
CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';
所以请确保远程数据库中的用户是'monty'@'%'
或'monty'@'yourhosthere'