UNIX 소켓을 사용하여 Mysqli 액세스가 거부되었습니다.

UNIX 소켓을 사용하여 Mysqli 액세스가 거부되었습니다.

PHP를 배우려고 하는데 데이터베이스 연결을 설정하는 중입니다.
Mysql Workbench에서 php라는 데이터베이스를 생성하고, 테이블을 생성했습니다. 그런 다음 auth_socket을 사용하여 "sam"@"localhost" 계정을 만들었습니다(저는 Ubuntu 데스크탑을 사용하고 있으며 sam의 출력입니다 ).whoami.를 누르고 ctrl+alt+T입력 mysql한 후 를 누르면 enter성공적으로 로그인이 됩니다.
이제 나는 따라갔다.https://www.php.net/manual/en/mysqli.quickstart.connections.php, 소켓을 사용해 보았지만 실패했습니다.

2021/08/13 16:54:35 [error] 1363#1363: *11 FastCGI sent in stderr: "PHP message: PHP Warning:  mysqli::__construct(): (HY000/1698): Access denied for user 'sam'@'localhost' in /var/www/php/my2.php on line 3PHP message: PHP Warning:  main(): Couldn't fetch mysqli in /var/www/php/my2.php on line 5" while reading response header from upstream, client: 127.0.0.1, server: _, request: "GET /my2.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php7.4-fpm.sock:", host: "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>

출력은 Connect failed: Access denied for user 'sam'@'localhost'
로그 포함 입니다.

2021/08/13 16:59:17 [error] 1363#1363: *13 FastCGI sent in stderr: "PHP message: PHP Warning:  mysqli::__construct(): (HY000/1698): Access denied for user 'sam'@'localhost' in /var/www/php/mysqli.php on line 10" while reading response header from upstream, client: 127.0.0.1, server: _, request: "GET /mysqli.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php7.4-fpm.sock:", host: "localhost:803"

sammysql 사용자의 비밀번호가 없습니다 .

MariaDB [mysql]> select user,password from user;
+-----------+-------------------------------------------+
| user      | password                                  |
+-----------+-------------------------------------------+
| root      |                                           |
| someone   | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
| someone   | *9B8A3238012965AC630589D859535EA0B7C231A7 |
| someone   | *AF411B6C73B3AC3A2316A309A71758175CC14FEE |
| someone   | *D76A454D84260E84578F09915624F275F3D0E08B |
| sam       |                                           |
+-----------+-------------------------------------------+
6 rows in set (0.001 sec)

개인정보 보호를 위해 실제 사용자 이름을 다른 사람으로 변경했습니다. sam비밀번호가 없는 것을 볼 수 있습니다 .

답변1

Mysql Workbench를 사용하여 사용자의 비밀번호를 설정 sam하고 해당 비밀번호를 사용하여 mysqli 라이브러리에 연결하세요. Mysql Workbench에 클릭 연결 옵션이 있는지는 모르겠습니다. 그렇지 않은 경우 또는 SQL 방식을 선호하는 경우 다음과 같은 것을 사용하십시오.

CREATE USER 'sam'@'localhost' IDENTIFIED BY 'choose_a_safe_password'

관련 정보