Truy cập vào máy chủ MySQL qua VirtualBox


20

Tôi đang cố gắng để máy chủ MySQL (nằm trong VM) phản hồi lại máy khách (trên máy chủ). Tất cả các phương thức trả về giống nhau:

Host '10.0.2.2' is not allowed to connect to this MySQL server

Tôi đã đảm bảo chuyển tiếp cổng thích hợp. Tôi cũng đảm bảo rằng trong my.cnftôi có các dòng sau:

skip-external-locking
bind-address = 0.0.0.0

Điều này đã không làm việc với tôi. Tôi cũng đã cố gắng chơi một chút như folowing:

bind-address = 10.0.2.2

Nhưng điều này cũng không hoạt động với tôi - máy chủ không thể khởi động.

Bất cứ ý tưởng, tôi sai ở đâu?

CẬP NHẬT. Tôi đã không kiểm tra các đặc quyền root@%như trong Làm cách nào để thay đổi các đặc quyền cho người dùng MySQL đã được tạo?

GIẢI QUYẾT.


Những tài khoản người dùng nào bạn đã tạo trong MySQL?
Shane Madden

Tài khoản của tôi là root:root. Tôi nghi ngờ rằng vấn đề là trong thông tin đăng nhập, nếu không, thông báo lỗi sẽ nêu lên một cái gì đó lile Access denied for root@10.0.2.2hoặc cái gì đó.
defance

@ShaneMadden Xin lỗi. Bạn đã khá đúng. Điều đó là trong đặc quyền cho root@%. Khá là lỗi của tôi.
defance

Câu trả lời:


37

Localhost chỉ dành cho tài khoản root trong phần lớn các cài đặt mặc định, bạn có chắc chắn đã cho phép nó đăng nhập từ hệ thống khác không? Từ tài liệu tham khảo MySQL :

điều đó có nghĩa là không có hàng nào trong bảng người dùng có giá trị Máy chủ khớp với máy chủ

Vì vậy, không có %hoặc 10.0.2.2trong Hostcột nào cả. Kiểm tra cấu hình hiện tại của bạn:

select user,host from mysql.user where user='root';

Bạn có thể muốn tạo một mục gốc mới với cùng một mật khẩu như bạn có bây giờ.

create user 'root'@'10.0.2.2' identified by 'yourpassword';
grant all privileges on *.* to 'root'@'10.0.2.2' with grant option;
flush privileges;

1
Vâng. Cảm ơn bạn. Tôi cũng đã giải quyết nó chỉ một lúc trước như bạn đã nêu ở đây. Đó chính xác là vấn đề của tôi.
defance

1
Câu trả lời của Shane là chính xác và có thể được chạy trong một lệnh duy nhất, hữu ích nếu bạn đang sử dụng một cái gì đó như tập lệnh Ansible / Vagrant để tự động hóa:mysql -e "create user 'root'@'10.0.2.2' identified by 'yourpassword'; grant all privileges on *.* to 'root'@'10.0.2.2' with grant option; flush privileges;"
kayinKoder
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.