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
'programing' 카테고리의 다른 글
대용량 데이터 테이블에서 각 사용자의 첫 번째/마지막 행을 선택하는 SQL 퍼포먼스 (0) | 2023.01.30 |
---|---|
Panda 데이터 프레임에서 행 목록을 삭제하는 방법은 무엇입니까? (0) | 2023.01.30 |
JBoss 6에서의 MariaDB XA 드라이버 설정 (0) | 2023.01.30 |
mysql 서비스가 시작되지 않거나 중단됨 - 시간 초과(Ubuntu, MariaDB) (0) | 2023.01.30 |
MySQL/MariaDB에서 LONGTEXT 필드를 JSON으로 반환하는 방법 (0) | 2023.01.30 |