programing

Virtual Box Vagrant 내에서 Mysql 서버에 연결하는 방법

newsource 2023. 1. 30. 22:00

Virtual Box Vagrant 내에서 Mysql 서버에 연결하는 방법

Vagrant를 사용하여 새로운 VirtualBox 머신을 마운트하고 VM 내부에 Mysql 서버를 설치했습니다.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에 바인딩되어 있는지 확인하십시오. 그렇지 않으면 시스템 외부에서 액세스할 수 없습니다.

이것은, 다음의 편집에 의해서 확인할 수 있습니다./etc/mysql/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-0 를 참조해 주세요.

다음을 사용하여 상자에 로그인하십시오.ssh vagrant@127.0.0.1 -p 2222(패스워드 vagrant)

그 후, 다음과 같이 입력합니다.sudo nano /etc/mysql/my.cnf다음 행을 #로 코멘트합니다.

#skip-external-locking 
#bind-address

저장 후 종료

그 후, 다음과 같이 합니다.sudo service mysql restart

그런 다음 SSH를 통해 MySQL 서버에 연결할 수 있습니다.

나는 최근에 이 문제를 접했다.PuPHPet을 사용하여 설정을 생성했습니다.

SSH를 통해 MySQL에 연결하려면 "vagrant" 비밀번호가 작동하지 않고 SSH 키 파일을 통해 인증해야 했습니다.

MySQL Workbench와 연결하려면

접속 방식

표준 TCP/IP over SSH

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)

출처 : https://coderwall.com/p/yzwqvg

두 답변 모두 도움이 되지 않았기 때문에, 저는 더 찾아봐야 했고, 이 기사에서 해결책을 찾아야 했습니다.

간단히 말하면 다음과 같습니다.

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

bind-address 컨피규레이션파일 변경:

존재하는 경우 다음과 같이 값을 변경합니다.존재하지 않는 경우 [mysqld] 섹션의 아무 곳에나 추가합니다.

bind-address = 0.0.0.0

변경 내용을 구성 파일에 저장하고 MySQL 서비스를 다시 시작합니다.

service mysql restart

데이터베이스 사용자에게 작성/접근 권한 부여:

루트 사용자로 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

언급URL : https://stackoverflow.com/questions/10709334/how-to-connect-to-mysql-server-inside-virtualbox-vagrant