2012-02-13 49 views
6

Tôi có thiết lập mySQL trong PC trên mạng nội bộ của mình, làm cách nào để kết nối với máy tính đó? Tôi cũng đã cài đặt mySQL trong máy tính này (mà tôi muốn sử dụng để kết nối với cơ sở dữ liệu).kết nối với máy chủ mysql trên một máy tính khác trong LAN

Tôi đã thử các sau nhưng nó không làm việc

mysql -u user -h 192.168.1.28:3306 -p password 
ERROR 2005 (HY000): Unknown MySQL server host '192.168.1.28:3306' (0) 

EDIT: Nhờ sự giúp đỡ của bạn. Dù sao, tôi kết nối mà không có 3306 và tôi có một vấn đề khác. MACBOOK là tên của máy khách của tôi.

mysql -u user -ppassword -h 192.168.1.28 
ERROR 1045 (28000): Access denied for user 'user'@'MACBOOK' (using password: YES) 

Cảm ơn.

+2

Nếu bạn có câu hỏi mới (và vấn đề xác thực khác với vấn đề kết nối), vui lòng nghiên cứu lại và nếu bạn không tìm thấy câu trả lời (tôi rất nghi ngờ), hãy đặt câu hỏi mới. Ngoài ra, xin vui lòng đọc một trong nhiều người mới bắt đầu giới thiệu vào MySQL - mà nên trả lời câu hỏi của bạn ngay lập tức. –

Trả lời

5

theo một danh sách kiểm tra đơn giản:

  1. Hãy thử ping máy ping 192.168.1.2
  2. Đảm bảo MySQL đang chạy trên cổng quy định 3306 tức là nó chưa được sửa đổi.
  3. Đảm bảo rằng máy tính khác không chặn các kết nối gửi đến trên cổng đó. Nếu có, hãy thêm ngoại lệ tường lửa để cho phép các kết nối trên cổng 3306 và cho phép các kết nối gửi đến nói chung.
  4. Sẽ thật tuyệt nếu bạn có thể đăng lỗi chính xác như được hiển thị khi bạn cố gắng thực hiện kết nối đó.
0

Bạn không phải chỉ định ': 3306' sau IP, đó là cổng mặc định cho MySQL.

Và nếu máy chủ MySQL của bạn chạy với cổng khác hơn 3306, thì bạn phải thêm '-P [port]' thay vì thêm nó vào địa chỉ IP.

Máy khách MySQL sẽ không nhận ra cú pháp "host: port", bạn phải sử dụng -P [port] để thay thế.

Và btw, nếu bạn sử dụng '-p password', nó sẽ không hoạt động và sẽ yêu cầu bạn nhập lại mật khẩu. Bạn phải dán mật khẩu vào -p: -ppassword. (Tuy nhiên, đó là một thói quen rất xấu, bởi vì bất kỳ ai có thể thực hiện một PS trên máy chủ của bạn đều có thể thấy mật khẩu đơn giản ...)

0

thực sự bạn không nên chỉ định cổng trong tên máy chủ. Mysql có tùy chọn đặc biệt cho cổng (nếu cổng khác với mặc định)

loại

mysql --host=192.168.1.2 --port=3306 
0

Bạn nên sử dụng này:

>mysql -u user -h 192.168.1.2 -P 3306 -ppassword 

hay này:

>mysql -u user -h 192.168.1.2 -ppassword 

.. .bởi vì 3306 là số cổng mặc định.

mysql Options

2
mysql -u user -h 192.168.1.2 -p 

này nên là đủ để kết nối đến máy chủ MySQL. Vui lòng kiểm tra tường lửa 192.168.1.2 nếu kết nối từ xa đến máy chủ MySQL được bật.

Kính trọng

+0

Không làm việc cho tôi. –

5

Vì bạn có mysql trên máy tính cục bộ, bạn không cần phải bận tâm đến địa chỉ IP của máy. Chỉ cần sử dụng localhost:

mysql -u user -p 

hoặc

mysql -hlocalhost -u user -p 

Nếu bạn không thể đăng nhập với điều này, bạn phải tìm hiểu những gì tên người dùng (user @ host) tồn tại trong MySQL Server locallly. Dưới đây là những gì bạn cần làm:

Bước 01) Startup mysql để không có mật khẩu được yêu cầu không có mật khẩu và từ chối kết nối TCP/IP

service mysql restart --skip-grant-tables --skip-networking 

Hãy ghi nhớ rằng SQL chuẩn cho thêm người dùng, cấp và thu hồi privs bị tắt.

Bước 02) Hướng dẫn người dùng host

select concat(''',user,'''@''',host,'''') userhost,password from mysql.user; 

Bước 03) Kiểm tra mật khẩu của bạn để chắc chắn rằng nó hoạt động

select user,host from mysql.user where password=password('YourMySQLPassword'); 

Nếu mật khẩu của bạn sản xuất không có đầu ra cho truy vấn này, bạn có một xấu mật khẩu.

Nếu mật khẩu của bạn tạo đầu ra cho truy vấn này, hãy xem người dùng và máy chủ. Nếu giá trị lưu trữ của bạn là '%', bạn sẽ có thể kết nối từ mọi nơi. Nếu máy chủ lưu trữ của bạn là 'localhost', bạn sẽ có thể kết nối cục bộ.

Làm cho người dùng bạn có 'root' @ 'localhost' được xác định.

Một khi bạn đã làm những gì cần thiết, chỉ cần khởi động lại mysql thường

service mysql restart 

Nếu bạn có thể kết nối thành công trên macbook, chạy truy vấn này:

SELECT USER(),CURRENT_USER(); 

USER() báo cáo như thế nào bạn cố gắng để xác thực trong MySQL

CURRENT_USER() báo cáo cách bạn được phép xác thực trong MySQL

Hãy cho chúng tôi biết điều gì xảy ra !!!

CẬP NHẬT 2012/02/13 20:47 EDT

Đăng nhập vào máy chủ và lặp lại từ xa Bước 1-3

Xem nếu bất kỳ người dùng cho phép truy cập từ xa (ví dụ, máy chủ trong mysql.user là ' % '). Nếu không, hãy thêm 'user' @ '%' vào mysql.user.

+2

Tôi có mysql trong localhost của mình, nhưng tôi muốn kết nối với mysql trên máy tính khác. – revolver

7

Đó là câu hỏi rất hữu ích! vì chúng ta cần chạy ứng dụng với DB tập trung đôi khi. trong trường hợp đó chúng ta nên cung cấp các đặc quyền cho các máy tính đó trong mạng LAN để truy cập cơ sở dữ liệu cụ thể được lưu trữ trong LAN PC. vì vậy đây là giải pháp cho điều đó!

1.đi đến máy chủ MySQL

2.type sau mã để cấp quyền truy cập cho pc khác

mysql> grant all privileges on *.* to 'root'@'%' identified by 'root_password'; 
mysql> flush privileges; 

thay thế ‘%’ với IP mà bạn muốn cấp quyền truy cập cho!

+3

Sự cho phép của nó khá nguy hiểm cho phép 'root' SuperUser được sử dụng từ bất kỳ ip nào trong vũ trụ. Nó sẽ là tốt hơn để tạo một tài khoản người dùng mới với quyền truy cập vào cơ sở dữ liệu chỉ trong câu hỏi, và chỉ với các privilages tối thiểu để làm những gì được yêu cầu bởi truy cập từ xa. – RiggsFolly

+0

Câu trả lời này thực sự hữu ích! Và có như @ RiggsFolly cho biết tạo một tài khoản mới đầu tiên sau đó làm điều đó. – user55924

+0

Tôi đồng ý nó rất nguy hiểm, NHƯNG thật điên rồ khi làm điều này trên một máy tính trong một văn phòng nhà nhỏ? – mlissner

1

Đang kết nối đến bất kỳ cơ sở dữ liệu mysql nên như thế này:

$mysql -h hostname -Pportnumber -u username -p (sau đó nhập)

Sau đó, nó sẽ yêu cầu mật khẩu. Lưu ý: Số cổng phải gần hơn với -P hoặc số sẽ hiển thị lỗi. Hãy chắc chắn rằng bạn biết cổng mysql của bạn là gì. Mặc định là 3306 và là tùy chọn để chỉ định cổng trong trường hợp này. Nếu bất cứ điều gì khác bạn cần phải đề cập đến số cổng với -P hoặc người nào khác nó sẽ hiển thị lỗi.

Ví dụ: $mysql -h 10.20.40.5 -P3306 -u root -p (sau đó nhập)

Password:My_Db_Password 

Gubrish về sản phẩm mà bạn sử dụng.

mysql>_ 

Lưu ý: Nếu bạn đang cố kết nối một db tại vị trí khác, hãy đảm bảo bạn có thể ping tới máy chủ/máy tính đó.

$ping 10.20.40.5 

Nó sẽ trả về TTL khi bạn quay lại PONG. Nếu nó nói đích không thể truy cập sau đó bạn không thể kết nối với mysql từ xa không có vấn đề gì.

Trong trường hợp này, hãy liên hệ với Quản trị viên mạng hoặc Kiểm tra kết nối cáp của bạn với máy tính của bạn cho đến khi kết thúc máy tính đích. Hoặc kiểm tra xem bạn có LAN/WAN/MAN hay internet/intranet/extranet đang hoạt động hay không.

Các vấn đề liên quan