2015-11-30 4 views
2

Я хотел бы подключиться к mycli к серверу MySQL, работающему внутри брандмауэра.Подключение к MySQL извне vagrant

Моя основная Vagrantfile выглядит в следующем фрагменте коды:

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 
    config.ssh.shell = "bash -c 'BASH_ENV=/etc/profile exec bash'" 

    config.vm.box = "debian/wheezy64" 

    config.vm.provision :shell, path: "misc/bootstrap.sh" 
    config.vm.network "forwarded_port", guest: 80, host: 8082 

    config.vm.synced_folder ".", "/var/www/", 
    owner: "vagrant", 
    group: "www-data", 
    mount_options: ["dmode=775,fmode=664"], 
    create: true 

    config.vm.provider "virtualbox" do |vb| 
     vb.memory = 1536 
     vb.cpus = 1 
    end 
end 

Чтобы установить необходимое программное обеспечение Я использую следующий фрагмент код:

echo "mysql-server mysql-server/root_password password $DBPASSWD" | debconf-set-selections 
echo "mysql-server mysql-server/root_password_again password $DBPASSWD" | debconf-set-selections 

echo "phpmyadmin phpmyadmin/dbconfig-install boolean true" | debconf-set-selections 
echo "phpmyadmin phpmyadmin/app-password-confirm password $DBPASSWD" | debconf-set-selections 
echo "phpmyadmin phpmyadmin/mysql/admin-pass password $DBPASSWD" | debconf-set-selections 
echo "phpmyadmin phpmyadmin/mysql/app-pass password $DBPASSWD" | debconf-set-selections 
echo "phpmyadmin phpmyadmin/reconfigure-webserver multiselect none" | debconf-set-selections 

sudo apt-get install -y apache2 libapache2-mod-php5 mysql-server php5-mysql php5 phpmyadmin php5-cli php5-curl vim 
sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/sites-available/phpmyadmin.conf 
sudo ln -s /etc/apache2/sites-available/phpmyadmin.conf /etc/apache2/sites-enabled/phpmyadmin.conf 

sudo a2enmod rewrite 
sudo a2enmod php5 
sudo cp /var/www/misc/apache2.conf /etc/apache2/sites-available/default 

sudo service apache2 restart 

mysql -uroot -p$DBPASSWD -e "CREATE USER '$DBUSER'@'localhost' IDENTIFIED BY '$DBPASSWD';GRANT ALL ON *.* TO '$DBUSER'@'localhost';FLUSH PRIVILEGES;CREATE DATABASE $DBNAME;" 
mysql -u$DBUSER -p$DBPASSWD $DBNAME < /var/www/db.sql 

Я думаю, моя проблема в том, что учетные данные пользователя, которые Я храню в базе данных. Но я не могу ответить.

+0

Что вы ожидали? Вызываются ли какие-либо ошибки? – Rik

+0

вы можете просмотреть http://stackoverflow.com/questions/33146223/vagrant-port-forwarding-for-mysql/33172400#33172400 –

+0

$ DBUSER и $ DBPASSWD не отображаются, но, вероятно, если они являются корневыми и пустыми, Вероятно, я работаю, да? –

ответ

0

Если вы подключаетесь извне vm, вам нужно будет добавить сопоставление портов, которое будет прослушивать хост и пересылать запросы гостю. Подобно тому, определенной для HTTP здесь:

config.vm.network "forwarded_port", guest: 80, host: 8082 

Для MySQL (если ваш MySQL прослушивает порт по умолчанию):

config.vm.network "forwarded_port", guest: 3360, host: 33600 

После, модифицирующих бродяга файл, vagrant reload.

Затем при подключении укажите порт

mysql -P 33600 -u user -p database 
+0

Я добавил порт для mysql и попытался соединиться с вашей командой 'mysql -P 33600 -umyuser -pmypw mydb' и получить следующую ошибку:' ERROR 2002 (HY000): не удается подключиться к локальному серверу MySQL через сокет '/var/run/mysqld/mysqld.sock' (2) ' – Bene

+0

Возможно, вам потребуется перезапустить vm, а не только условие. Вы попробовали «бродячую перезагрузку»? – JRD

+0

Да, я сделал 'destroy' и' up', но все равно такую ​​же ошибку:/ – Bene

1

на вершине, что сказал JRD на перенаправлении портов, вам необходимо убедиться, что MySQL прослушивает все порты, а не только локально

отредактировать /etc/mysql/my.cnf файл и убедитесь, либо

  • у вас есть bind-address = 0.0.0.0
  • или вы прокомментируете л ине #bind-address ...

необходимо перезагрузить сервер MySQL после изменения

$ sudo service mysql restart 

Затем вы можете подключиться с вашего хоста - В случае, если вы получите следующую ошибку

$ mysql -h127.0.0.1 -P 33600 -uroot -p 
Enter password: 
ERROR 1130 (HY000): Host '172.16.42.2' is not allowed to connect to this MySQL server 

Затем вернулся гостю и до

[email protected]:~$ mysql -h127.0.0.1 -uroot -p 
... 
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.16.42.2' WITH GRANT OPTION; 
Query OK, 0 rows affected (0.00 sec) 

mysql> FLUSH PRIVILEGES; 
Query OK, 0 rows affected (0.00 sec) 

Тогда у вас не должно быть проблем с подключением к главной машине

$ mysql -h127.0.0.1 -P 33600 -uroot -p 
Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 36 
Server version: 5.5.44-0ubuntu0.12.04.1 (Ubuntu) 
+0

все еще получает ошибку 'ERROR 2013 (HY000): потерянное соединение с сервером MySQL при« считывании исходного пакета связи », системная ошибка: 0' и запись в hosts.deny, и я сделал« ВСЕ: ВСЕ »в hosts.allow – Bene

+0

скорее чем 'ALL: ALL' поместить' mysqld: ALL' в файл hostss.allow –

Смежные вопросы