2016-10-14 9 views
0

Vagrant VM을 사용하여 MySQL에 연결하려고합니다. 나는 방랑 SSH에 [email protected]를 사용하여 MySQL에 액세스 할 수 있습니다,하지만 난 방랑 VM에 사용되는 IP, 나는 access denied 오류를 얻고있다 [email protected]을 사용하여 연결합니다.'root'@ 'IP_Address'를 사용하여 MySQL에 연결할 수 없습니다.

이 내 방랑 파일 설정입니다 :

# Create a forwarded port mapping which allows access to a specific port 
    # within the machine from a port on the host machine. In the example below, 
    # accessing "localhost:8080" will access port 80 on the guest machine. 

    config.vm.network "forwarded_port", guest: 80, host: 8080 
    config.vm.network "forwarded_port", guest: 3306, host: 3306 

    # Create a private network, which allows host-only access to the machine 
    # using a specific IP. 

    config.vm.network "private_network", ip: "192.168.33.10" 

[email protected] 이미 MySQL을 추가하고, 권한을

mysql> select User,Host from mysql.user; 
+-----------+---------------+ 
| User  | Host   | 
+-----------+---------------+ 
| root  | 192.168.33.10 | 
| mysql.sys | localhost  | 
| root  | localhost  | 
+-----------+---------------+ 
3 rows in set (0.00 sec) 

MySQL의 5.7 mysqld.cnf 부여됩니다

I have tried bind-address to '0.0.0.0' and bind-address '192.168.33.10'. 

아직도 오류 메시지가 표시됩니다 :

[email protected]:/etc/mysql/mysql.conf.d$ mysql -u [email protected] -p 
Enter password: 
ERROR 1045 (28000): Access denied for user '[email protected]'@'localhost' (using password: YES) 
+0

SQL 연결에 암호가 필요하지 않을 때 암호를 설정했다고 생각합니다. –

+0

방랑자에 대해 잘 알지 못하지만 VM 또는 호스트 또는 다른 컴퓨터에서 mysql에 액세스하려고합니까? 나는 로컬에서 추측하고 있으므로 다른 사용자를 생성하고 루트 대신이 아이디로 연결하거나이 IP에 대한 액세스 권한을 부여하여'GRANT ALL PRIVILEGES ON *. * TO 'root'@'192.168.33.10'으로 식별됩니다 'P4 $ $ WORD '부여와 함께; –

답변

2

봐입니다.

'[email protected]' 

그리고 MySQL은에서 연결을 보는 것을 호스트는 다음과 같습니다 : 여기

'localhost' 

MySQL 클라이언트이 옵션을 해석하는 방법의 오류 메시지는 MySQL 서버에 공급되는 이름임을 표시한다 :

mysql -u [email protected] -p 

-u user은 사용자 이름 값으로 '[email protected]' 보는 것,이 경우, 문자열 값을 제공합니다. @ 부호와 숫자 및 점은 사용자 이름 문자열의 일부입니다. 그 문자에는 특별한 의미가 없습니다. 문자열 일뿐입니다. 그리고 MySQL 서버는 해당 문자열과 일치하는 User 값을 가진 mysql.users 테이블의 행을 찾을 것입니다. (

는 MySQL은 또한 Host 열의 값 보는 것입니다, 일치하는 항목을 찾을 수 있습니다. 즉, 연결에서 들어오는 볼 호스트와 일치하도록해야 할 것입니다. 즉 'root'@'localhost'입니다 의미하는 것은 다른 입니다 'root'@'192.168.33.10'보다 사용자. 생략 암호

에 대한

-p 프롬프트 프로토콜이 사용에 대한 명령 옵션, 우리는의를 제공하지 않는 경우 포트 번호 등 MySQL의 기본에 연결할 수있는 호스트입니다 즉

-h localhost 

마치 우리가 지정한 것입니다.우리는 TCP/IP 프로토콜을 통해 MySQL 서버에 연결하고, 유닉스 소켓을 사용하지 않는하려면


, 우리는 -h hostname 또는 -h ipaddress를 지정하거나 --protocol=TCP

호스트 이름 "localhost를 지정해야합니다 : MySQL은 특별한 의미를 가지고있다. 즉, 우리가 예상하지 루프백 IP 주소를 통해 유닉스 소켓을 통해 연결합니다. 예를 들어


, 지역 machin의에서 MySQL 서버에 연결 e, 루프백 IP 주소를 사용하여 기본 포트 3306에서 수신 대기 :

mysql -h 127.0.0.1 -u root -p 

이 정보의 대부분은 MySQL 참조 설명서에서 다루고 있습니다.

http://dev.mysql.com/doc/refman/5.7/en/connecting.html

또한, 기본적으로 MySQL은 호스트 이름을 IP 주소를 확인하는 DNS 역방향 조회를 사용합니다.

mysql.users 테이블의 Host 열에서 IP 주소를 사용하려면 역 DNS 조회를 비활성화해야합니다. 이 옵션을 포함하면됩니다.

skip_name_resolve 

my.cnf 구성 파일에 있습니다.

1

오른쪽 명령은 오류 메시지에주의

mysql -u root -h 192.168.33.10 -p