Vagrantで新しいVirtualBox Machineをマウントし、その中にVM Mysql Serverをインストールしました。 vmの外部でそのサーバーに接続するにはどうすればよいですか?すでにVagrantfileのポート3306を転送していますが、mysqlサーバーに接続しようとすると、「初期通信パケットの読み取り」というエラーが再送信されます
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0
MySQLが127.0.0.1ではなく0.0.0.0にバインドされていることを確認してください。そうしないと、マシンの外部からアクセスできなくなります。
これを確実にするには、my.confファイルを編集してbind-address
アイテムを探します。これはbind-address = 0.0.0.0
のように見せたいものです。次に、これを保存してmysqlを再起動します。
Sudo service mysql restart
実稼働サーバーでこれを行う場合は、ここで説明されているセキュリティへの影響に注意してください: https://serverfault.com/questions/257513/how-bad-is-setting-mysqls-bind -address-to-0-0-0-
ssh [email protected] -p 2222
(パスワードvagrant)を使用してボックスにログインします
次に:Sudo nano /etc/mysql/my.cnf
そして、次の行を#でコメントアウトします
#skip-external-locking
#bind-address
保存して終了
次に:Sudo service mysql restart
その後、SSHを介してMySQLサーバーに接続できます。
最近、この問題に出会いました。 PuPHPetを使用して構成を生成しました。
SSH経由でMySQLに接続するには、「迷惑な」パスワードが機能していませんでしたが、代わりにSSHキーファイルで認証する必要がありました。
MySQL Workbenchに接続するには
接続方法
SSH経由の標準TCP/IP
SSH
Hostname: 127.0.0.1:2222 (forwarded SSH port)
Username: vagrant
Password: (do not use)
SSH Key File: C:\vagrantpath\puphpet\files\dot\ssh\insecure_private_key
(Locate your insercure_private_key)
MySQL
Server Port: 3306
username: (root, or username)
password: (password)
接続をテストします。
Mysql workbenchまたはsequel proを使用してこれを実行しようとする人にとって、これらは入力です。
Mysql Host: 192.168.56.101 (or ip that you choose for it)
username: root (or mysql username u created)
password: **** (your mysql password)
database: optional
port: optional (unless you chose another port, defaults to 3306)
ssh Host: 192.168.56.101 (or ip that you choose for this vm, like above)
ssh user: vagrant (vagrants default username)
ssh password: vagrant (vagrants default password)
ssh port: optional (unless you chose another)
さて、与えられた返信のどちらも私を助けなかったので、私はもっと調べなければならなかった、そして解決策を this の記事で見つけた。
一言で言えば、答えは次のとおりです。
MySQL Workbenchを使用してMySQLに接続する
Connection Method: Standard TCP/IP over SSH
SSH Hostname: <Local VM IP Address (set in PuPHPet)>
SSH Username: vagrant (the default username)
SSH Password: vagrant (the default password)
MySQL Hostname: 127.0.0.1
MySQL Server Port: 3306
Username: root
Password: <MySQL Root Password (set in PuPHPet)>
与えられたアプローチを使用して、MySQL WorkbenchとValentina Studioを使用して、ホストUbuntuマシンからvagrantのmysqlデータベースに接続することができました。
ボックスにログインした後、私のために働いたステップは次のとおりです。
MySQL構成ファイルの場所:
$ mysql --help | grep -A 1 "Default options"
Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
Ubuntu 16では、パスは通常/etc/mysql/mysql.conf.d/mysqld.cnf
です
バインドアドレスの構成ファイルの変更:
存在する場合は、次のように値を変更します。存在しない場合は、[mysqld]セクションのどこかに追加します。
bind-address = 0.0.0.0
変更を構成ファイルに保存し、MySQLサービスを再起動します。
service mysql restart
データベースユーザーへのアクセスを作成/許可:
RootユーザーとしてMySQLデータベースに接続し、次のSQLコマンドを実行します。
mysql> CREATE USER 'username'@'%' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES ON mydb.* TO 'username'@'%';
これは私のために働いた: VagrantでMySQLに接続する
username: vagrant password: vagrant
Sudo apt-get update Sudo apt-get install build-essential zlib1g-dev
git-core sqlite3 libsqlite3-dev Sudo aptitude install mysql-server
mysql-client
Sudo nano /etc/mysql/my.cnf change: bind-address = 0.0.0.0
mysql -u root -p
use mysql GRANT ALL ON *.* to root@'33.33.33.1' IDENTIFIED BY
'jarvis'; FLUSH PRIVILEGES; exit
Sudo /etc/init.d/mysql restart
# -*- mode: Ruby -*-
# vi: set ft=Ruby :
Vagrant::Config.run do |config|
config.vm.box = "lucid32"
config.vm.box_url = "http://files.vagrantup.com/lucid32.box"
#config.vm.boot_mode = :gui
# Assign this VM to a Host-only network IP, allowing you to access
it # via the IP. Host-only networks can talk to the Host machine as
well as # any other machines on the same network, but cannot be
accessed (through this # network interface) by any external
networks. # config.vm.network :hostonly, "192.168.33.10"
# Assign this VM to a bridged network, allowing you to connect
directly to a # network using the Host's network device. This makes
the VM appear as another # physical device on your network. #
config.vm.network :bridged
# Forward a port from the guest to the Host, which allows for
outside # computers to access the VM, whereas Host only networking
does not. # config.vm.forward_port 80, 8080
config.vm.forward_port 3306, 3306
config.vm.network :hostonly, "33.33.33.10"
end