2011-01-09 19 views
11

Tôi có khởi động kép với Windows 7 và Ubuntu 10.Có thể sử dụng cùng một cơ sở dữ liệu MySQL trên Windows (XAMPP) và Linux (LAMP) không?

On của Windows 7 Tôi đã XAMPP cài đặt, trên Linux Tôi đã cài đặt LAMP.
Có thể chỉ có một cơ sở dữ liệu MySQL cho cả hai hệ điều hành không?

Tôi muốn làm điều này vì tôi muốn sử dụng Ubuntu cho công việc (không có bất kỳ chương trình nào có thể làm chậm công việc của tôi - Google Talk, ICQ chẳng hạn) và Windows 7 chỉ để giải trí, nhưng tôi muốn có cơ hội tạo ra những thay đổi nhỏ trên kịch bản mà tôi đang lập trình. Có bất kì cách nào để đạt được điều này không?

+1

Câu hỏi thú vị. Về lý thuyết, điều này * nên * hoạt động - định dạng tệp cơ bản được cho là giống hệt nhau. Tuy nhiên, tôi không hoàn toàn thoải mái với ý tưởng này. Quan tâm để xem những gì đi lên –

+0

"mà không có bất kỳ chương trình mà có thể làm chậm công việc của tôi - google nói chuyện, ICQ ví dụ" --- tại sao bạn không chỉ cần chạy nó? ;-) – zerkms

+0

Xin chào. Bạn đã tìm thấy câu trả lời chưa? Nó có hoạt động không? Tôi cần như vậy. Nếu bạn đã tìm thấy câu trả lời - vui lòng chấp nhận (nếu đó là một trong số các câu trả lời đã được đưa ra) hoặc đăng câu trả lời của riêng bạn. – Ivan

Trả lời

5

trong bạn my.ini (trong Windows nó nằm ở đâu đó như C:\Program Files\MySQL\MySQL Server 5.1 Đó là file cấu hình chính cho MySQL.) Tập tin, bạn nên có dòng này:

datadir="C:/ProgramData/MySQL/MySQL Server 5.1/Data/" ví dụ

thay đổi nó trong cả Windows và Linux Ubuntu trỏ đến một thư mục vật lý duy nhất (trên phân vùng có hệ thống tệp mà Windows có thể nhận ra). Nó sẽ hoạt động. Định dạng tệp giống hệt nhau.

Cho dù bạn khởi động từ Ubuntu hay Windows 7, sẽ không thành vấn đề, 2 bản dựng MySQL khác nhau sẽ tìm kiếm dữ liệu ở cùng một nơi. Sau khi dữ liệu được sửa đổi trong môi trường Windows, bạn khởi động từ Ubuntu và dữ liệu ở đó, được sửa đổi.

+0

Nếu bạn tình cờ sử dụng các bảng InnoDB trong DB của bạn, vui hơn sẽ tiếp tục. Trong trường hợp của tôi, tôi cần xóa các tập tin ib_logfile0 và ib_logfile1 khỏi thư mục dữ liệu MySQL mỗi lần trước khi máy chủ MySQL khởi động. Các logfiles được tái tạo khi khởi động máy chủ. Bạn có thể tự động hóa nó bằng cách sử dụng tập lệnh. Hãy cẩn thận khi thực hiện việc này - tạo bản sao lưu của tất cả các tệp đã thay đổi/đã xóa! –

+0

Tôi không biết nếu đó là do InnoDB hay cái gì khác, nhưng tôi đã buộc phải giả vờ người dùng "mysql" sở hữu các tệp cơ sở dữ liệu. Điều đó có thể được thực hiện đơn giản trong fstab: bindfs #/media/Windows/PHP/mysql-data/media/mysql fuse owner = mysql, nhóm = mysql, perms = 755 0 0 –

-2

Tất nhiên bạn có thể.
Nhưng tôi không nghĩ rằng, nó có thể cho hệ thống khởi động kép của bạn.

Giả sử, máy chủ MySQL của bạn được cài đặt trong máy Win7. Bạn hoàn toàn có thể truy cập nó từ môi trường Win7, và thậm chí từ môi trường Linux (nếu bạn không từ chối truy cập vào các thiết lập máy chủ MySQL của bạn). Hệ thống, đó là MySQL của bạn được cài đặt theo, đã được chạy! Sau đó, bạn có thể truy cập nó từ nhiều hệ thống nếu được phép ;-)

+1

cách bạn chạy hai hệ thống trên cùng một máy ? !!?!? –

4

Trong khi không lý tưởng, điều này nên được tốt miễn là:

  1. Bạn đang sử dụng phiên bản giống hệt nhau của MySQL trên cả hai hệ điều hành.

  2. Bạn tắt mysqld trước khi sao chép các tệp dữ liệu. (Nếu bạn định sao chép các tập tin dữ liệu giữa các phân vùng thay vì giữ chúng trên phân vùng fat32 được chia sẻ).

Về bản chất, miễn là MySQL đang chạy trên kiến ​​trúc có cùng "độ chính xác", thì định dạng tệp phải được chuyển.

Như một gợi ý, bạn có thể đóng ICQ, vv và sử dụng bộ nhớ miễn phí để chạy Ubuntu trong máy ảo VirtualBox trên Windows 7 - do đó đảm bảo bạn có thể truy cập vào môi trường phát triển một cách bình thường mà không phải khởi động lại, v.v. Điều này thực sự là một thiết lập tốt đẹp vì nó có nghĩa là bạn có thể sử dụng một môi trường phát triển Windows nếu bạn muốn và chỉ cần lưu trữ dữ liệu trang web của trang web trên một Samba gắn kết trên máy ảo Ubuntu.

+0

Tôi thứ hai này và câu trả lời của AlexanderMP. Tuy nhiên, phải chuyển đổi hệ điều hành chỉ để tập trung âm thanh như bạn cần trợ giúp cơ bản hơn. :) –

1

Chừng nào dữ liệu được sharedable/reable/có khả năng ghi trên cả hai hệ điều hành, và cả định dạng tập tin được giống hệt nhau trên cả hai hệ điều hành, nó nên được doable

Vấn đề đầu tiên tôi có thể tưởng tượng là vô cảm trường hợp trong cửa sổ.
vì vậy, hãy chuyển đổi cơ sở dữ liệu/bảng của bạn ti camel_case (hoặc camelcase) nếu bạn luôn sử dụng CamelCase.

biết thêm thông tin để đọc lên - http://dev.mysql.com/doc/refman/5.0/en/limits-windows.html

+0

+1 Điểm tốt về độ nhạy của tên bảng. (Tôi luôn là người ủng hộ "chỉ có tên thấp hơn").) –

-3

Tôi mang kiến ​​rất nhiều thời gian và thấy rằng chạy một hạt nhân Linux là một cách có thể giải quyết và giải pháp khả thi.

Vagrant

Nó là một công cụ để xây dựng và quản lý môi trường máy ảo trong một công việc duy nhất. Lý do chính tại sao tôi cho rằng bạn sử dụng vagrant là nó không quá nặng và không nuốt nhiều tài nguyên máy tính của bạn. Tôi tin rằng bạn có được thông qua Vagrant documentation mà sẽ cho phép bạn khởi động một máy dựa trên Linux trên máy vật lý của bạn.

Giả sử rằng máy chủ được gán IP 192.168.1.2 và máy ảo có địa chỉ IP là 192.168.1.10 và đảm bảo rằng máy chủ và máy khách có thể nhìn thấy nhau. Vui lòng đọc kỹ số Networking section để tùy chỉnh cấu hình mạng.

Thẩm định mối liên hệ giữa chủ nhà và khách máy

Cài đặt MySQL Server

MySQL là một hệ thống quản lý cơ sở dữ liệu. Về cơ bản, nó sẽ tổ chức và cung cấp quyền truy cập vào cơ sở dữ liệu nơi trang web của chúng tôi có thể lưu trữ thông tin.

Mở thiết bị đầu cuối trong máy đã được thiết lập từ bước trên. Chạy lệnh sau:

sudo apt-get install mysql-server-5.6

Ghi chú: Nó tùy thuộc vào phiên bản của bản phân phối Linux được cài đặt, lệnh trên sẽ được điều chỉnh cho phù hợp với nhu cầu của bạn. Để cài đặt, tôi đã sử dụng lõi của Ubuntu 14.04, xem link.

Trong khi cài đặt, máy chủ của bạn sẽ yêu cầu bạn chọn và xác nhận mật khẩu cho người dùng MySQL root. Đây là một tài khoản quản trị trong MySQL đã tăng các đặc quyền.

Thẩm định quá trình cài đặt Từ một thiết bị đầu cuối trong máy khách vãng lai (tức là máy ảo), chạy lệnh sau:

mysql -u root -p

sẽ hỏi mật khẩu MySQL, sau đó cung cấp một trong những bạn có thiết lập trong khi cài đặt MySQL Server. Sau đây là ảnh chụp màn hình nếu bạn cung cấp thông tin chính xác cho máy chủ MySQL.

enter image description here

Bật MySQL Server từ xa truy cập

Bởi vì chúng ta cần một máy chủ cơ sở dữ liệu tập trung, nơi các máy tính khác có thể truy cập và kết nối với cơ sở dữ liệu quan tâm. Một lần nữa, mở một terminal và chạy lệnh MySQL sau:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.2' IDENTIFIED BY PASSWORD '*4ACFE3202A5FF5CF467898FC58AAB1D615029441' WITH GRANT OPTION; GRANT PROXY ON ''@'' TO 'root'@'192.168.1.2' WITH GRANT OPTION; FLUSH PRIVILEGES;

192.168.1.2 là địa chỉ IP của máy chủ và chuỗi băm của password được từ user bảng trong cơ sở dữ liệu mysql.

OK. Bạn có thể nghỉ ngơi và thưởng thức đồ uống của bạn nếu không có vấn đề cho đến nay.

Thẩm định các truy cập từ xa

Từ một thiết bị đầu cuối trên máy chủ, cháy lên các lệnh sau:

mysql -h192.168.1.2 -uroot -p

được yêu cầu bạn nhập mật khẩu. Nếu chứng chỉ gốc chính xác, bạn sẽ thấy ảnh chụp màn hình giống như hình trên. Một điều cần chú ý là thêm -h192.168.1.2 sau mysql lệnh vì chúng tôi không có trong máy nơi máy chủ MySQL được cài đặt.

Tất cả trong tất cả, chúng tôi đã thiết lập máy chủ MySQL được sử dụng cho cả máy chủ và máy khách. Trong thực tế, nếu tôi có một máy khác được gán 192.168.1.3 cũng có thể kết nối với máy chủ cơ sở dữ liệu và trao đổi dữ liệu giữa máy chủ và máy khách.

+1

Bạn có thực sự nghĩ đây là câu trả lời cho câu hỏi này không? – Sk8erPeter

+0

@ Sk8erPeter: Đây là một gợi ý của tôi bởi vì chúng tôi có thể chạy một hộp ảo chơi như một máy chủ web. Tôi nghĩ giải pháp này có thể hoạt động tốt. Và tôi đã thử điều này. – Tung

+0

Trước hết, bạn không trả lời bất cứ điều gì. Bạn vừa viết cho bạn Googled nó, và thấy rằng nó có thể thực hiện được. Xin chúc mừng cho điều đó! : D Nhưng làm thế nào điều này giúp bất cứ ai? Bạn đã không đi vào chi tiết LÀM THẾ NÀO để làm điều đó, và Stack tràn là một diễn đàn để giúp đỡ lẫn nhau, không chỉ chờ đợi upvotes cho một số bullsh which t mà không có gì liên quan và không có gì hữu ích. Tôi đề nghị bạn xóa câu trả lời của bạn để không có nhiều downvotes cho điều đó (tiếc là bạn xứng đáng, xin lỗi) HOẶC chỉnh sửa nó để chia sẻ một cái gì đó hữu ích (nhưng trong trường hợp này bạn nên xóa cái này và viết một câu trả lời mới). – Sk8erPeter