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
問題は、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.1
MySQL情報を設定するだけです。ただし、SSHに使用するSSH情報もサーバーに追加します。また、Sequel Proは、そのSSH接続を使用して、MySQLにシームレスにトンネリングおよび接続します。これは、MySQLネットワークとユーザー権限の問題に対処する代わりに処理するためのより良い方法かもしれません。
Sequel ProでのSSHトンネリングの場合、次のことを行う必要があります。
localhost
または127.0.0.1
である必要があります。ここで、VagrantインストールのSSH設定を設定します。
あなたがする必要があるのはここにあるバインドアドレスを編集することです:
$ 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ファイルで設定したものに変更します)。
すべてかなりオープンであるため、ここにはセキュリティの問題があることに注意してください。ただし、開発作業の場合は問題ありません。
私がこれを試すまで、上記のすべての答えは私にとってはうまくいきませんでした:
vagrant ssh
を使用してvagrantインスタンスに接続しますpasswd
と入力するだけで、新しいパスワードを設定できます。一貫性を保つためにパスワードvagrant
を使用してください。その手順を実行すると、簡単に接続できます。
@hugoのおかげで PuPHPetでProを続編するにはどうすればよいですか?
https://github.com/AlexDisler/mysql-vagrant を試してください。これにより、sshトンネルなしで接続できます(特定の設定については、install.shを確認してください)。
vagrant port
を使用して、現在のポート転送を確認できます(複数のvagrantボックスがある場合)。
また、ケースが複数のvagrant boxである場合、問題は、新しいsshキーをホストの.ssh/known_hosts
に次の方法で追加する必要があることである可能性があります。
ホストの.ssh/known_hosts
で最初のvagrant box Hostにコメントします。
sequel Proテスト接続ダイアログを介して2番目のvagrantボックスHostを追加します。
ホストの.ssh/known_hosts
の-最初のvagrant box Hostのコメントを解除します。
したがって、両方のvagrantボックス(それぞれに独自のキーがあります)が認識されます。
Vagrantボックスへの接続はSSH経由で行う必要があります。したがって、以前に接続したことがあり、Vagrantボックスに大きな変更(破棄/再構築など)を行ったことがある場合は、新しい秘密鍵があり、~/.ssh/known_hosts
のIPアドレスレコードを更新する必要がある場合があります。これを行うには、vimでファイルを開き、vagrantboxのIPアドレスで始まる行を削除します。
Bind-addressに関する答えは正しいですが、値を0.0.0.0に変更するのではなく、my.cnfファイルを編集してbind-addressを完全にコメントアウトする方がよいことがわかりました。
それを行ってから元の答えの残りの部分に従うと、続編プロを介して接続できるはずです