Điểm:0

Truy cập Mysqli bị từ chối, sử dụng ổ cắm UNIX

lá cờ in
Sam

Tôi đang cố gắng học PHP và tôi đang thiết lập kết nối cơ sở dữ liệu.
Trên Mysql Workbench, tôi đã tạo một cơ sở dữ liệu có tên là php và tạo một bảng. Sau đó, tôi đã tạo tài khoản "sam"@"localhost",(Tôi đang sử dụng máy tính để bàn Ubuntu và sam là đầu ra của tôi là ai ) với auth_socket, Đã cấp TẤT CẢ trên . , và khi tôi nhấn ctrl+alt+T và đầu vào mysql và hãy nhấn đi vào , Tôi có thể đăng nhập thành công.
Bây giờ tôi đã theo dõi https://www.php.net/manual/en/mysqli.quickstart.connections.php và đã thử sử dụng ổ cắm, tôi đã thất bại.

13/08/2021 16:54:35 [lỗi] 1363#1363: *11 FastCGI được gửi trong thiết bị lỗi chuẩn: "Thông báo PHP: Cảnh báo PHP: mysqli::__construct(): (HY000/1698): Quyền truy cập bị từ chối đối với người dùng 'sam '@'localhost' trong /var/www/php/my2.php trên dòng 3 Thông báo PHP: PHP Cảnh báo: main(): Không thể tìm nạp mysqli trong /var/www/php/my2.php trên dòng 5" trong khi đọc tiêu đề phản hồi từ thượng nguồn, máy khách: 127.0.0.1, máy chủ: _, yêu cầu: "GET /my2.php HTTP/1.1", ngược dòng: "fastcgi://unix:/var/run/php/php7.4-fpm. sock:", máy chủ lưu trữ: "localhost:803"

Và đây là mã của tôi. <?php

$mysqli = new mysqli("localhost", "sam", Null, "php");

tiếng vang $mysqli->host_info . "\N";

Đầu ra không có gì trong trình duyệt.

Sau đó, tôi đã thử điều này.

<html>
   <head>
      <title>Connecting MySQL Server</title>
   </head>
   <body>
      <?php
         $dbhost = 'localhost';
         $dbuser = 'sam';
         //$dbpass = 'root@123';
         $mysqli = new mysqli($dbhost, $dbuser,NULL,NULL,NULL,"/run/mysqld/mysqld.sock");
         
         if($mysqli->connect_errno ) {
            printf("Connect failed: %s<br />", $mysqli->connect_error);
            exit();
         }
         printf('Connected successfully.<br />');
         $mysqli->close();
      ?>
   </body>
</html>

đầu ra là Kết nối không thành công: Truy cập bị từ chối đối với người dùng 'sam'@'localhost'
Với nhật ký

13/08/2021 16:59:17 [lỗi] 1363#1363: *13 FastCGI được gửi trong thiết bị lỗi chuẩn: "Thông báo PHP: Cảnh báo PHP: mysqli::__construct(): (HY000/1698): Quyền truy cập bị từ chối đối với người dùng 'sam '@'localhost' trong /var/www/php/mysqli.php trên dòng 10" trong khi đọc tiêu đề phản hồi từ thượng nguồn, máy khách: 127.0.0.1, máy chủ: _, yêu cầu: "NHẬN /mysqli.php HTTP/1.1", ngược dòng: "fastcgi://unix:/var/run/php/php7.4-fpm.sock:", máy chủ lưu trữ: "localhost:803"

Tôi không có mật khẩu cho người dùng sam trên mysql.

MariaDB [mysql]> chọn người dùng, mật khẩu từ người dùng;
+------------+---------------------------------- ------+
| người dùng | mật khẩu |
+------------+---------------------------------- ------+
| gốc | |
| ai đó | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
| ai đó | *9B8A3238012965AC630589D859535EA0B7C231A7 |
| ai đó | *AF411B6C73B3AC3A2316A309A71758175CC14FEE |
| ai đó | *D76A454D84260E84578F09915624F275F3D0E08B |
| sam | |
+------------+---------------------------------- ------+
6 hàng trong bộ (0,001 giây)

Tôi đã thay đổi tên người dùng thực tế thành ai đó để bảo vệ quyền riêng tư. Bạn có thể thấy rằng sam không có mật khẩu.

Điểm:0
lá cờ in

Sử dụng Mysql Workbench của bạn để đặt mật khẩu cho người dùng sam và sử dụng mật khẩu đó để kết nối với thư viện mysqli. Tôi không biết liệu Mysql Workbench có tùy chọn nhấp qua để làm như vậy hay không, nếu không hoặc nếu bạn thích cách SQL hơn, hãy sử dụng một cái gì đó như:

TẠO NGƯỜI DÙNG 'sam'@'localhost' ĐƯỢC XÁC ĐỊNH BỞI 'choose_a_safe_password'
Sam avatar
lá cờ in
Sam
Nếu tôi muốn sử dụng mật khẩu ít hơn thì sao? Tôi đã học được rằng nhiều mật khẩu hơn có nghĩa là nhiều rủi ro hơn. Ngoài ra, mật khẩu sẽ ở dạng plain_text trong php. Có tùy chọn bỏ qua mật khẩu trong php của tôi không?
xogoxec344 avatar
lá cờ in
Tôi không biết về mysql auth mà không cần mật khẩu. Bạn có thể giải thích lý do tại sao bạn nghĩ "nhiều mật khẩu hơn có nghĩa là nhiều rủi ro hơn" không? Bạn học cái đó ở đâu? Tôi rất không đồng ý.
xogoxec344 avatar
lá cờ in
hãy xem https://www.percona.com/blog/2019/11/01/use-mysql-without-a-password/ -> sử dụng `IDENTIFIED VIA unix_socket;` thay vì mật khẩu và người dùng linux có cùng tên có thể kết nối mà không cần chỉ định mật khẩu.
Sam avatar
lá cờ in
Sam
Bạn sử dụng ssh thay vì mật khẩu và các phím ssh đứng trước cụm mật khẩu.
xogoxec344 avatar
lá cờ in
cách bạn bảo mật kết nối ssh của mình hoàn toàn độc lập với cách bạn kết nối với mysql từ tập lệnh php chạy trên cùng một máy.
Sam avatar
lá cờ in
Sam
Cảm ơn, tôi thấy bây giờ. Có lẽ tôi nên đặt bộ não của mình vào lò vi sóng. ha ha

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.