Câu trả lời này đã được chỉnh sửa nhiều lần dựa trên thông tin mới do OP cung cấp
Quyền root thực sự được cho phép để kết nối với máy chủ từ máy chủ lưu trữ mà bạn đang kết nối? Nếu chuỗi lỗi đang trả về tên chuẩn của máy chủ, thì rất có thể 'localhost' không trỏ đến 127.0.0.1:
Điều đó sẽ lặp lại một cái gì đó như "Quyền truy cập bị từ chối đối với người dùng 'root' @ localhost '", không phải tên của máy chủ.
Hãy thử:
$con = mysql_connect("127.0.0.1","root","pass");
Chỉnh sửa (Sau khi có thêm thông tin trong phần bình luận)
Nếu bạn đang kết nối từ một máy chủ hoàn toàn khác, bạn phải cho MySQL biết [email protected]_hostname_or_ip
được phép kết nối và có các đặc quyền thích hợp để tạo cơ sở dữ liệu và người dùng.
Bạn có thể thực hiện việc này khá dễ dàng bằng cách sử dụng phpmyadmin (trên máy chủ MySQL) hoặc truy vấn như:
CREATE USER 'root'@'192.168.1.1' IDENTIFIED BY PASSWORD 'secret';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'192.168.1.1' IDENTIFIED BY PASSWORD 'secret' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
Tôi khuyên bạn không nên đặt tên người dùng này là 'root', chỉ cần tạo một người dùng với tất cả các đặc quyền chung cần thiết. Trong ví dụ, tôi đã sử dụng 192.168.1.1, đó có thể dễ dàng là tên máy chủ, chỉ cần đảm bảo DNS được thiết lập thích hợp. Chỉ định máy chủ để khớp chính xác như nó xuất hiện trong nhật ký khi bạn kết nối với máy chủ từ xa.
Bạn cũng có thể muốn điều chỉnh giới hạn để hợp khẩu vị. Thông tin thêm về CREATE USER
cú pháp có thể là tìm thấy tại đây
, GRANT
tại đây
.
Chỉnh sửa
Nếu sử dụng MySQL 4 - CREATE không phải là một tùy chọn. Bạn chỉ cần sử dụng GRANT ( 4.1 Tài liệu về quản lý người dùng )
Chỉnh sửa
Nếu sử dụng C-Panel, chỉ cần sử dụng API . Mặc dù có, nhưng nó có những điều kỳ quặc, dễ bảo trì những thứ sử dụng nó hơn là những cách giải quyết bất thường. Rất nhiều ứng dụng thành công sử dụng nó mà không có vấn đề gì. Giống như bất kỳ API nào khác, bạn cần cập nhật các thay đổi khi sử dụng nó.