Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để truy cập một dịch vụ web cơ sở dữ liệu MySQL qua mạng LAN?

Nếu đây là MySQL, mạng của máy chủ cơ sở dữ liệu không được bật theo mặc định. Để kích hoạt kết nối mạng trong MySQL, bạn cần tìm tệp cấu hình MySQL đang hoạt động có tên my.cnf . Và chỉnh sửa nó.

Tôi sẽ giải thích cách thực hiện việc này trên Ubuntu 12.04, nhưng các hướng dẫn tương tự đối với hầu hết mọi cài đặt Linux.

Bật mạng MySQL

Trước tiên, hãy mở tệp bằng trình chỉnh sửa như nano . Bạn có thể cần chạy lệnh qua sudo :

sudo nano /etc/mysql/my.cnf

Sau đó, tìm kiếm khu vực trong tệp cấu hình của bạn với bind-address tùy chọn:

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 127.0.0.1

Bây giờ hãy thay đổi bind-address đó cài đặt như sau:

bind-address            = 0.0.0.0

Sau đó, lưu tệp và khởi động lại MySQL như thế này:

sudo service mysql restart

Và bây giờ cơ sở dữ liệu MySQL của bạn sẽ có thể lấy các kết nối không phải máy chủ cục bộ từ các máy từ xa.

Đảm bảo cổng MySQL 3306 đang Mở

Điều đó nói rằng, ngay cả khi đã bật mạng, bạn vẫn nên kiểm tra xem bạn có thể kết nối với máy từ xa từ dòng lệnh hay không bằng cách sử dụng công cụ mạng như nmap . Bạn có thể có tường lửa trên 192.168.1.10 chặn cổng MySQL 3306 vì vậy bạn cần kiểm tra xem nó đang mở hay đóng như sau:

nmap 192.168.1.10 -p3306

Và nếu cổng 3306 đang mở, đây sẽ là phản hồi; lưu ý open dưới STATE :

Starting Nmap 6.40 ( http://nmap.org ) at 2014-06-10 10:34 EDT
Nmap scan report for 192.168.1.10
Host is up (0.0035s latency).
PORT     STATE SERVICE
3306/tcp open  mysql

Nhưng nếu cổng 3306 đóng cửa, bạn sẽ nhận được điều này; lưu ý closed dưới STATE :

Starting Nmap 6.40 ( http://nmap.org ) at 2014-06-10 10:34 EDT
Nmap scan report for 192.168.1.10
Host is up (0.0035s latency).
PORT     STATE  SERVICE
3306/tcp closed mysql

Kiểm tra tài trợ người dùng MySQL của bạn

Bây giờ với tất cả những điều đó đã hoàn thành, máy chủ cơ sở dữ liệu MySQL của bạn sẽ có thể truy cập được trên mạng. Nhưng điều đó nói lên rằng, bạn cần đảm bảo rằng người dùng cơ sở dữ liệu của bạn mà bạn đang sử dụng được phép kết nối từ một máy từ xa trong mạng LAN của bạn. Vì vậy, hãy đăng nhập vào MySQL và chạy lệnh này để xem người dùng có thể có những trợ cấp nào:

SELECT user, host FROM `mysql`.`user`;

Thao tác này sẽ hiển thị cho bạn danh sách người dùng &máy chủ được kết nối với những người dùng đó trong MySQL. Vấn đề là hầu hết người dùng chỉ được cấp đặc quyền truy cập vào localhost hoặc 127.0.0.1 . Một số được cấp máy chủ ký tự đại diện là % . Bạn cần xem danh sách đó và xem liệu người dùng bạn muốn sử dụng có máy chủ ký tự đại diện hay không (% ) hoặc một địa chỉ IP cụ thể được kết nối với chúng. Bạn có thể kiểm tra GRANT của người dùng s bằng cách chạy một dòng như thế này; tất nhiên là thay đổi [your_database_user][hostname] để phù hợp với cài đặt của bạn:

SHOW GRANTS FOR '[your_database_user]'@'[hostname]';

Điều đó sẽ hiển thị cho bạn danh sách GRANT có sẵn s cho một người dùng trên một máy chủ cụ thể. Nếu họ có GRANT sẽ cho phép truy cập từ xa — chẳng hạn như sử dụng ký tự đại diện % máy chủ — sau đó bạn đã hoàn tất. Nếu họ không có bất kỳ GRANT nào Bạn có thể chạy các lệnh MySQL sau đây; tất nhiên là thay đổi [your_database][your_database_user] để phù hợp với cài đặt của bạn:

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `[your_database]`.* TO '[your_database_user]'@'192.168.0.0/255.255.0.0';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `[your_database]`.* TO '[your_database_user]'@'10.0.0.0/255.0.0.0';
FLUSH PRIVILEGES;

Cả GRANT các dòng áp dụng một bộ quyền truy cập khá tiêu chuẩn vào cơ sở dữ liệu. Dòng đầu tiên áp dụng chúng cho bất kỳ kết nối nào trong dải mạng LAN của 192.168.x.x . Dòng thứ hai áp dụng chúng cho bất kỳ kết nối nào trong phạm vi mạng LAN của 10.x.x.x . Tôi muốn làm điều đó để bao gồm tất cả các cơ sở trên mạng nội bộ. FLUSH PRIVILEGES; cuối cùng Về cơ bản, dòng lệnh cho MySQL tải lại các bảng đặc quyền của người dùng cho phép các quyền đó có hiệu lực.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySql Connector 6.8.2 RC, Entity Framework 6 và Code First

  2. đồng hồ thời gian mysql

  3. Tìm lần tiếp theo doanh nghiệp mở cửa; tính toán giờ của mysql

  4. Kết nối MATLAB và MySQL với Trình điều khiển JDBC

  5. Mọi bảng dẫn xuất phải có bí danh riêng - lỗi từ tổ hợp MySQL giảm dần