Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ruby远程连接到mysql2_Mysql_Ruby_Rake_Mysql2 - Fatal编程技术网

使用ruby远程连接到mysql2

使用ruby远程连接到mysql2,mysql,ruby,rake,mysql2,Mysql,Ruby,Rake,Mysql2,我正在尝试从另一个VM2连接到安装在VM1中的mysql2。 vm2使用ssh和CooConnection wroks连接到vm1。 但是,当我尝试连接到mysql时,出现以下错误: No connection. Check your internet connection. my config.yaml文件包含以下内容: # SQL connection :adapter: mysql2 :database: project :username: bochra :password: 'pas

我正在尝试从另一个VM2连接到安装在VM1中的mysql2。 vm2使用ssh和CooConnection wroks连接到vm1。 但是,当我尝试连接到mysql时,出现以下错误:

No connection. Check your internet connection.
my config.yaml文件包含以下内容:

# SQL connection
:adapter: mysql2
:database: project
:username: bochra
:password: 'password'
:host: ip_@_VM1
我的Rakefile的一部分如下所示:

config = YAML.load(File.open('config.yaml'))
puts 'Clearing the database of all data.'
  begin
    client = Mysql2::Client.new(config)
    client.query('DROP TABLE IF EXISTS Employees')
    client.query('CREATE TABLE Employees(id INT, age INT, salary TEXT NOT NULL, PRIMARY KEY(id))')

  rescue
    ErrorHandler.new.show_error :no_connection
  end

问题是,我在默认的Ubuntu上默认安装了MySQL,安装后我没有真正更改任何设置。 在默认安装中,绑定地址设置为127.0.0.1,因此我对其进行了注释。在那之后,我又收到一封邮件,上面写着:
Mysql2::错误:不允许主机“xxxxxx”连接到此MySQL服务器
。因此,我从服务器(VM1)向我的用户(bochra)授予以下权限:

CREATE USER 'bochra'@'%' IDENTIFIED BY 'root';
GRANT ALL PRIVILEGES ON *.* TO 'bochra'@'%' WITH GRANT OPTION; and that worked fine for me

问题是,我在默认的Ubuntu上默认安装了MySQL,安装后我没有真正更改任何设置。 在默认安装中,绑定地址设置为127.0.0.1,因此我对其进行了注释。在那之后,我又收到一封邮件,上面写着:
Mysql2::错误:不允许主机“xxxxxx”连接到此MySQL服务器
。因此,我从服务器(VM1)向我的用户(bochra)授予以下权限:

CREATE USER 'bochra'@'%' IDENTIFIED BY 'root';
GRANT ALL PRIVILEGES ON *.* TO 'bochra'@'%' WITH GRANT OPTION; and that worked fine for me

防火墙规则?当我在客户端(VM2)中运行sudo iptables-L时,没有规则,但当我在服务器(vm1)中尝试sudo iptables-L时,它不会给我权限,因为我已经为客户端创建了一个用户(ubuntu)以建立ssh连接。所以这个用户ubuntu不在sudoers文件中。我只是说
ssh
mysql
可能受到不同规则的约束。使用类似于
nmap
的工具查看端口是否打开。@Bochra您正在使实际异常静音。删除
rescue
块以获得更详细的错误。@Bartosz这是我在删除rescue块时得到的结果:rake中止!Mysql2::错误:无法连接到'192.168.0.28'(111)/var/lib/gems/1.9.1/gems/Mysql2-0.4.2/lib/Mysql2/client.rb:87:in
connect'/var/lib/gems/1.9.1/gems/Mysql2-0.4.2/lib/Mysql2/client.rb:87:in
初始化“防火墙规则”?当我在客户端(VM2)中运行sudo iptables-L时,没有rulles,但是当我在服务器(vm1)中尝试sudo iptables-L时,它并没有给我这个权限,因为我已经为客户端创建了一个用户(ubuntu),以便建立ssh连接。所以这个用户ubuntu不在sudoers文件中。我只是说
ssh
mysql
可能受到不同规则的约束。使用类似于
nmap
的工具查看端口是否打开。@Bochra您正在使实际异常静音。删除
rescue
块以获得更详细的错误。@Bartosz这是我在删除rescue块时得到的结果:rake中止!Mysql2::错误:无法连接到'192.168.0.28'(111)/var/lib/gems/1.9.1/gems/Mysql2-0.4.2/lib/Mysql2/client.rb:87:in
connect'/var/lib/gems/1.9.1/gems/Mysql2-0.4.2/lib/Mysql2/client.rb:87:in
initialize'