
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"
sam
mysql 사용자의 비밀번호가 없습니다 .
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'