2010-05-31 33 views
6

Tôi có một máy chủ PHP đang hoạt động. Bây giờ tôi muốn sử dụng cơ sở dữ liệu (MySQL hoặc một cái gì đó tương tự). Có thể tạo một cơ sở dữ liệu từ PHP?Tôi có thể tạo cơ sở dữ liệu của riêng mình từ PHP không?

Tôi muốn nhấn mạnh rằng trong trường hợp của mình, tôi không có bất kỳ tên người dùng và mật khẩu nào mà tôi có thể sử dụng để kết nối với máy chủ MySQL. Tôi cũng không có bảng điều khiển nơi tôi có thể tạo cơ sở dữ liệu hoặc bảng trong cơ sở dữ liệu hiện có.

thêm:

Tôi nghĩ rằng SQLite là những gì tôi cần. Nhưng nếu tôi cố tạo một cơ sở dữ liệu mới từ PHP, tôi thấy PHP cố gắng tạo một tệp trong một thư mục khác với thư mục chứa tệp của tôi. Sau đó, nó báo cáo rằng nó không thể tạo ra cơ sở dữ liệu và tôi nghĩ rằng đó là bởi vì nó cố gắng tạo trong thư mục mà tôi không có quyền viết. Tôi có thể buộc PHP tạo SQLite trong một thư mục cụ thể không?

+6

Không có mật khẩu và không có tên người dùng VÀ cơ sở dữ liệu SERVER? Nó sẽ dễ dàng hơn để yêu cầu một tài khoản người dùng sau đó kéo nó ra, tôi giả sử .. nhưng sau đó một lần nữa, tôi không bao giờ trong tình huống đó. :) – LukeN

+0

Bạn đã cài đặt máy chủ cơ sở dữ liệu chưa? (Trong trường hợp này, MySQL) – alternative

+0

Wow! Thật là một tình huống. Cảm ơn Chúa, tôi chưa bao giờ bước vào tình huống như vậy .. – User

Trả lời

10

Tôi giả sử bạn muốn tạo một cơ sở dữ liệu SQL mà không cần truy cập vào một máy chủ cơ sở dữ liệu độc lập. Bạn có thể sử dụng SQLite, là thư viện tạo cơ sở dữ liệu nhẹ trong một tệp duy nhất mà không có các quy trình riêng biệt.

Nó không hoàn toàn hiệu quả như một máy chủ cơ sở dữ liệu độc lập, do đó, nếu bạn cần hiệu năng, hãy sử dụng máy chủ cơ sở dữ liệu thích hợp. Nó không phải là một yêu cầu không hợp lý cho một ứng dụng web hiệu suất cao.

+2

Tôi tưởng tượng rằng một số người sẽ tăng nhu cầu hiệu suất của riêng họ, vì vậy tôi muốn chỉ ra rằng SQLite rất có thể sẽ làm tốt cho bạn cho đến khi bạn nhận được * thực sự * khổng lồ - như, hàng trăm hoặc hàng ngàn người dùng cùng một lúc. – Matchu

+0

Tôi đã gặp sự cố khi sử dụng SQLite từ PHP 4 và không thể nhớ nguyên nhân gây ra lỗi này. Đảm bảo bạn đang sử dụng ít nhất PHP 5 cho SQLite. Ngoài ra, SQLite3 là tốt hơn nhiều so với SQLite2. – amphetamachine

4

Mysql, no. SqlLite là một khả năng, bạn chỉ cần viết quyền trên hệ thống tập tin. www.sqlite.org/

+0

Đừng quên 'chown apache: apache' và' chmod 0600' tệp cơ sở dữ liệu. Hoặc 'chmod 0666' nếu bạn không có quyền truy cập root. Nhưng điều đó giới thiệu khả năng tải xuống cơ sở dữ liệu nếu nó được giữ trong thư mục htdocs. Tốt nhất là giữ nó trong một thư mục bên ngoài cái cây đó. – amphetamachine

1

Tôi muốn nhấn mạnh rằng trong trường hợp tôi không có bất kỳ người sử dụng tên và mật khẩu mà tôi có thể sử dụng để kết nối đến máy chủ MySQL . Tôi cũng không có bảng điều khiển nơi tôi có thể tạo cơ sở dữ liệu hoặc bảng trong cơ sở dữ liệu hiện tại .

Câu hỏi này gây nhầm lẫn cho tôi, vì nếu bạn đang sử dụng MySQL, bạn sẽ có thể tạo cơ sở dữ liệu, với tên người dùng và mật khẩu để kết nối, sử dụng công cụ quản trị dòng lệnh của họ. Đó cũng là cách tạo cơ sở dữ liệu hoặc bảng.

Bạn có nói rằng bạn không có quyền truy cập vào công cụ quản trị không? Bạn không có tài khoản? Nếu vậy, bạn sẽ cần phải yêu cầu họ từ người có quyền truy cập như vậy.

-1

Tạo cơ sở dữ liệu thông qua PHP là có thể, nhưng bạn cần có kết nối đến cơ sở dữ liệu cần cặp tên người dùng/mật khẩu hoặc một số loại xác thực. Trừ khi cơ sở dữ liệu của bạn cho phép đăng nhập ẩn danh hoặc một cái gì đó tương tự, nó không phải là có thể.

+1

Bạn không thể kết nối với thứ gì đó thậm chí không tồn tại. –

1

Tùy chọn là thiết lập cơ sở dữ liệu SQLite trong thư mục bên ngoài thư mục htdocs của bạn. Điều này là để mọi người không thể nhập vào tên của tệp cơ sở dữ liệu và tải xuống toàn bộ cơ sở dữ liệu, làm ảnh hưởng nghiêm trọng đến bảo mật.

Nếu bạn quá nghiêng, bạn thậm chí có thể thiết lập một lớp trừu tượng giữa PHP và DBMS bằng cách sử dụng PDO.Sau đó, để tạo ra các đối tượng cơ sở dữ liệu, bạn sẽ chỉ định một DSN specific to SQLite viết một cái gì đó như thế này:

$pdo_obj = new PDO('sqlite:/path/to/my_database.sqlite3'); 

và sau đó truy vấn nó như một đối tượng PDO bình thường bằng cách sử dụng PDO functions.

Phương pháp này sẽ tốt hơn cho phép di chuyển dễ dàng hơn bằng cách sử dụng DBMS máy khách-máy chủ khi bạn có thể thiết lập một thiết bị; nó chỉ là vấn đề sao chép cấu trúc bảng và dữ liệu sang cơ sở dữ liệu mới, và thay đổi DSN thành something appropriate.

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