web-dev-qa-db-ja.com

SequelProを使用してVagrantインスタンスでMySQLに接続する

VagrantでLaravelを実行していて、SequelProに接続しようとしています。

Vagrantを使い始めたばかりで、Sequel Proへの接続に関するいくつかのチュートリアルに従いましたが、すべて失敗しました。

これが私のVagrantファイルです:

# -*- mode: Ruby -*-
# vi: set ft=Ruby :

Vagrant.configure('2') do |config|
config.vm.hostname = 'laravel'
config.vm.boot_timeout = 3600
config.vm.box = 'debian-73-i386-virtualbox-puppet'
config.vm.box_url = 'http://puppet-vagrant-boxes.puppetlabs.com/debian-73-i386-virtualbox-puppet.box'

config.vm.network :forwarded_port, guest: 8000, Host: 8000
config.vm.network :forwarded_port, guest: 8500, Host: 8500

config.vm.provider :virtualbox do |vb|
vb.customize ['modifyvm', :id, '--memory', '1536']
end

config.vm.provision :puppet do |puppet|
puppet.manifests_path = 'puppet/'
puppet.manifest_file  = 'init.pp'
puppet.module_path    = 'puppet/modules/'
# puppet.options      = '--verbose --debug'
end

end

my.cnfから:

bind-address            = 127.0.0.1 

これが私の/etc/hostsです

127.0.0.1       localhost
127.0.1.1       laravel
# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

編集:バインドアドレスを0.0.0.0に変更しても機能しないSequelProでは

MySQL Host: 0.0.0.0
username: root
Password: (mysql password)
SSH Host 0.0.0.0
SSH User: vagrant
SSH Password: vagrant

編集:これが私のvagranthostsファイルです-etc/hosts

これは私のhostsファイルです

127.0.0.1       localhost
127.0.1.1       laravel
# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
11
user3692109

問題は、my.cnfでセットアップしたMySQLが、Vagrantサーバー内のlocalhost経由でのみ接続できるようになったことです。

bind-address            = 127.0.0.1 

MySQLでネットワークを有効にするには、my.cnfの設定を次のように変更する必要があります。

bind-address            = 0.0.0.0

次に、MySQLサービスを再起動します。 Vagrantでそれがどのように発生するかはわかりませんが、Ubuntuでは次のようなコマンドを入力します。

Sudo service mysql restart

MySQLユーザー権限をチェックして、MySQL内のユーザーが実際に任意のIPアドレスから使用できることを確認する必要がある場合があります。厳密にlocalhostまたは127.0.0.1に設定されている場合もあります。

公式MySQLドキュメント で説明されているように:

サーバーは、さまざまなタイプのアドレスを次のように扱います。

  • アドレスが0.0.0.0の場合、サーバーはすべてのサーバーホストIPv4インターフェイスでTCP/IP接続を受け入れます。

  • アドレスが::の場合、サーバーはすべてのサーバーホストIPv4およびIPv6インターフェイスでTCP/IP接続を受け入れます。このアドレスを使用して、すべてのサーバーインターフェイスでIPv4接続とIPv6接続の両方を許可します。

  • アドレスがIPv4にマップされたアドレスの場合、サーバーはそのアドレスのTCP/IP接続をIPv4またはIPv6形式で受け入れます。たとえば、サーバーが:: ffff:127.0.0.1にバインドされている場合、クライアントは--Host = 127.0.0.1または--Host = :: ffff:127.0.0.1を使用して接続できます。

  • アドレスが「通常の」IPv4またはIPv6アドレス(127.0.0.1または:: 1など)の場合、サーバーはそのIPv4またはIPv6アドレスに対してのみTCP/IP接続を受け入れます。

とはいえ、MySQL(または任意のデータベースサーバー)を世界に公開することはお勧めできません。しかし、このようなローカル開発の場合は許容されます。

したがって、MySQLネットワークを有効にすることができない場合は、Sequel Proに組み込まれているSSHトンネリング機能を使用して、SSH経由でMySQLに接続することもできます。さまざまな接続タイプすべての詳細は、 公式のSequel Proサイト に示されています。しかし、このスクリーンショットはそれをうまくまとめています。

基本的には、通常どおりにlocalhost/127.0.0.1MySQL情報を設定するだけです。ただし、SSHに使用するSSH情報もサーバーに追加します。また、Sequel Proは、そのSSH接続を使用して、MySQLにシームレスにトンネリングおよび接続します。これは、MySQLネットワークとユーザー権限の問題に対処する代わりに処理するためのより良い方法かもしれません。

enter image description here

Sequel ProでのSSHトンネリングの場合、次のことを行う必要があります。

  • 名前:接続に必要な名前。
  • MySQLホスト:MySQLホストのIPアドレス。localhostまたは127.0.0.1である必要があります。
  • ユーザー名:MySQLデータベースのユーザー名。
  • パスワード:そのMySQLデータベースのユーザー名に接続されているパスワード。
  • データベース:オプション(接続するデータベース)
  • ポート:デフォルトは3306なので、他の設定が必要な場合にのみ変更してください。

ここで、VagrantインストールのSSH設定を設定します。

  • SSHホスト:Vagrantマシンのホスト名またはIPアドレス。
  • SSHユーザー:そのVagrantマシンへのSSHユーザー名。
  • SSHパスワード:そのSSHユーザーに接続されているパスワード。
  • SSHポート:デフォルトは22なので、他に設定する必要がある場合にのみこれを変更してください。
22
JakeGould

これは私の設定です:

enter image description here

Vagrantマシンのデフォルトssh userおよびssh passwordすべてvagrant

7
pangpang

あなたがする必要があるのはここにあるバインドアドレスを編集することです:

$ Sudo nano /etc/mysql/my.cnf

127.0.0.0に設定されるbind_address設定を見つけて、0.0.0.0に変更します。

その後、mySQLを再起動します。

$ Sudo service mysql restart

最後のステップは、権限を更新することです。

$ mysql -u root -proot -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; FLUSH PRIVILEGES;"

次に、通常どおりに接続します(ポートをvagrantファイルで設定したものに変更します)。

sequel pro settings

すべてかなりオープンであるため、ここにはセキュリティの問題があることに注意してください。ただし、開発作業の場合は問題ありません。

5
Mediabeastnz

私がこれを試すまで、上記のすべての答えは私にとってはうまくいきませんでした:

  • vagrant sshを使用してvagrantインスタンスに接続します
  • passwdと入力するだけで、新しいパスワードを設定できます。一貫性を保つためにパスワードvagrantを使用してください。

その手順を実行すると、簡単に接続できます。

@hugoのおかげで PuPHPetでProを続編するにはどうすればよいですか?

2
Keeprock

https://github.com/AlexDisler/mysql-vagrant を試してください。これにより、sshトンネルなしで接続できます(特定の設定については、install.shを確認してください)。

2
Alex

私にとって重要な部分は、127.0.0.1ではなく0.0.0.0をMySQLホストとして使用することでした。それ以外はすべて通常どおりビジネスです(SSHを使用)。これは私のために働きます:

enter image description here

0
Lukas

vagrant portを使用して、現在のポート転送を確認できます(複数のvagrantボックスがある場合)。

また、ケースが複数のvagrant boxである場合、問題は、新しいsshキーをホストの.ssh/known_hostsに次の方法で追加する必要があることである可能性があります。

  1. ホストの.ssh/known_hosts最初のvagrant box Hostにコメントします。

  2. sequel Proテスト接続ダイアログを介して2番目のvagrantボックスHostを追加します。

  3. ホストの.ssh/known_hostsの-​​最初のvagrant box Hostのコメントを解除します。

したがって、両方のvagrantボックス(それぞれに独自のキーがあります)が認識されます。

0
obotezat

以下は、MACからmysqlワークベンチを使用して接続されたvagrantのスクリーンショットです enter image description here

0
AbdulBasit

Vagrantボックスへの接続はSSH経由で行う必要があります。したがって、以前に接続したことがあり、Vagrantボックスに大きな変更(破棄/再構築など)を行ったことがある場合は、新しい秘密鍵があり、~/.ssh/known_hostsのIPアドレスレコードを更新する必要がある場合があります。これを行うには、vimでファイルを開き、vagrantboxのIPアドレスで始まる行を削除します。

0
ctlockey

Bind-addressに関する答えは正しいですが、値を0.0.0.0に変更するのではなく、my.cnfファイルを編集してbind-addressを完全にコメントアウトする方がよいことがわかりました。

それを行ってから元の答えの残りの部分に従うと、続編プロを介して接続できるはずです

0
jose mera