Score:0

ปฏิเสธการเข้าถึง Mysqli โดยใช้ซ็อกเก็ต UNIX

ธง in
Sam

ฉันกำลังพยายามเรียนรู้ PHP และฉันกำลังตั้งค่าการเชื่อมต่อฐานข้อมูล
บน Mysql Workbench ฉันสร้างฐานข้อมูลชื่อ php และสร้างตาราง จากนั้นฉันสร้างบัญชี "sam"@"localhost" (ฉันใช้เดสก์ท็อป Ubuntu และ แซม เป็นผลลัพธ์ของ ฉันเป็นใคร ) ด้วย auth_socket อนุญาตทั้งหมด . และเมื่อฉันกด ctrl+alt+T และการป้อนข้อมูล มายเอสคิวแอล และกด เข้าสู่ ฉันสามารถเข้าสู่ระบบได้สำเร็จ
ตอนนี้ฉันทำตาม https://www.php.net/manual/th/mysqli.quickstart.connections.php และลองใช้ซ็อกเก็ต ฉันล้มเหลว

2021/08/13 16:54:35 [ข้อผิดพลาด] 1363#1363: *11 FastCGI ส่งใน stderr: "ข้อความ PHP: คำเตือน PHP: mysqli::__construct(): (HY000/1698): การเข้าถึงถูกปฏิเสธสำหรับผู้ใช้ 'sam '@'localhost' ใน /var/www/php/my2.php ออนไลน์ ข้อความ 3PHP: คำเตือน PHP: main(): ไม่สามารถดึง mysqli ใน /var/www/php/my2.php ออนไลน์ 5" ขณะอ่าน ส่วนหัวการตอบสนองจากอัปสตรีม ไคลเอ็นต์: 127.0.0.1 เซิร์ฟเวอร์: _ คำขอ: "GET /my2.php HTTP/1.1" อัปสตรีม: "fastcgi://unix:/var/run/php/php7.4-fpm. ถุงเท้า:", โฮสต์: "localhost:803"

และนี่คือรหัสของฉัน <?php

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

echo $mysqli->host_info "\n";

ผลลัพธ์ไม่มีอะไรในเบราว์เซอร์

จากนั้นฉันก็ลองทำสิ่งนี้

<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>

ผลลัพธ์คือ การเชื่อมต่อล้มเหลว: การเข้าถึงถูกปฏิเสธสำหรับผู้ใช้ 'sam'@'localhost'
พร้อมบันทึก

2021/08/13 16:59:17 [ข้อผิดพลาด] 1363#1363: *13 FastCGI ส่งใน stderr: "ข้อความ PHP: คำเตือน PHP: mysqli::__construct(): (HY000/1698): การเข้าถึงถูกปฏิเสธสำหรับผู้ใช้ 'sam '@'localhost' ใน /var/www/php/mysqli.php ที่บรรทัด 10" ขณะอ่านส่วนหัวการตอบสนองจากอัปสตรีม ไคลเอนต์: 127.0.0.1 เซิร์ฟเวอร์: _ คำขอ: "GET /mysqli.php HTTP/1.1" ต้นน้ำ: "fastcgi://unix:/var/run/php/php7.4-fpm.sock:", โฮสต์: "localhost:803"

ฉันไม่มีรหัสผ่านสำหรับผู้ใช้ แซม บน mysql

MariaDB [mysql]> เลือกผู้ใช้, รหัสผ่านจากผู้ใช้;
+------------+-------------------------------------- ------+
| ผู้ใช้ | รหัสผ่าน |
+------------+-------------------------------------- ------+
| ราก | |
| ใครบางคน | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
| ใครบางคน | *9B8A3238012965AC630589D859535EA0B7C231A7 |
| ใครบางคน | *AF411B6C73B3AC3A2316A309A71758175CC14FEE |
| ใครบางคน | *D76A454D84260E84578F09915624F275F3D0E08B |
| แซม | |
+------------+-------------------------------------- ------+
6 แถวในชุด (0.001 วินาที)

ฉันเปลี่ยนชื่อผู้ใช้จริงเป็นชื่อคนอื่นเพื่อปกป้องความเป็นส่วนตัว คุณสามารถเห็นได้ว่า แซม ไม่มีรหัสผ่าน

Score:0
ธง in

ใช้ Mysql Workbench เพื่อตั้งรหัสผ่านสำหรับผู้ใช้ แซม และใช้รหัสผ่านนั้นเพื่อเชื่อมต่อกับไลบรารี mysqli ฉันไม่รู้ว่า Mysql Workbench มีตัวเลือกการคลิกผ่านหรือไม่ ถ้าไม่มี หรือถ้าคุณชอบวิธี SQL ให้ใช้สิ่งต่อไปนี้:

สร้างผู้ใช้ 'sam' @'localhost' ที่ระบุโดย 'choose_a_safe_password'
Sam avatar
in flag
Sam
จะทำอย่างไรถ้าฉันต้องการใช้รหัสผ่านน้อยลง ฉันได้เรียนรู้ว่ารหัสผ่านที่มากขึ้นหมายถึงความเสี่ยงที่มากขึ้น นอกจากนี้รหัสผ่านจะเป็นข้อความธรรมดาใน php มีตัวเลือกในการละเว้นรหัสผ่านใน php ของฉันหรือไม่?
xogoxec344 avatar
in flag
ฉันไม่รู้เกี่ยวกับ mysql auth โดยไม่มีรหัสผ่าน คุณช่วยอธิบายได้ไหมว่าทำไมคุณถึงคิดว่า "รหัสผ่านที่มากขึ้นหมายถึงความเสี่ยงที่มากขึ้น" คุณเรียนรู้มาจากไหน ฉันไม่เห็นด้วยอย่างยิ่ง
xogoxec344 avatar
in flag
ดูที่ https://www.percona.com/blog/2019/11/01/use-mysql-without-a-password/ -> ใช้ `IDENTIFIED VIA unix_socket;` แทนรหัสผ่าน และผู้ใช้ linux ที่มีชื่อเดียวกันสามารถเชื่อมต่อได้โดยไม่ต้องระบุรหัสผ่าน
Sam avatar
in flag
Sam
คุณใช้ ssh แทนรหัสผ่าน และคีย์ ssh อยู่ก่อนหน้าวลีรหัสผ่าน
xogoxec344 avatar
in flag
วิธีที่คุณรักษาความปลอดภัยของการเชื่อมต่อ ssh นั้นไม่ขึ้นกับวิธีที่คุณเชื่อมต่อกับ mysql จากสคริปต์ php ที่ทำงานบนเครื่องเดียวกัน
Sam avatar
in flag
Sam
ขอบคุณ ฉันเห็นแล้ว บางทีฉันน่าจะใส่สมองเข้าไปในไมโครเวฟ ฮ่าๆ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา