mysql的Php连接问题-macbook pro

mysql的Php连接问题-macbook pro,php,mysql,macos,pdo,Php,Mysql,Macos,Pdo,我有一个问题,当我想将我的PHP代码连接到我的数据库时,这个错误显示在图片中 但是当我通过终端连接我的数据库时,这是有效的 你可以选择更干净的版本 $host = DB_HOST; // just ignore constants // $user = DB_USER; $pass = DB_PASS; $dbname = DB_NAME; $dsn = 'mysql:host=' . $host . ';dbname=' . $dbname

我有一个问题,当我想将我的PHP代码连接到我的数据库时,这个错误显示在图片中 但是当我通过终端连接我的数据库时,这是有效的


你可以选择更干净的版本

 $host      = DB_HOST; // just ignore constants //
 $user      = DB_USER;
 $pass      = DB_PASS;
 $dbname    = DB_NAME;

   $dsn = 'mysql:host=' . $host . ';dbname=' . $dbname;
    // Set options
    $options = array(
        PDO::ATTR_PERSISTENT    => true,
        PDO::ATTR_ERRMODE       => PDO::ERRMODE_EXCEPTION
    );
    // Create a new PDO instanace
    try{
         new PDO($dsn, $user, $pass, $options);
    }
    // Catch any errors
    catch(PDOException $e){
        echo $e;
    }

如果这不起作用,那么这里您可以使用Mysql驱动程序的可能副本将
localhost
替换为本地unix套接字的假定路径,而本地unix套接字在Mac上似乎不存在。改为使用
127.0.0.1
以便它实际使用TCP堆栈。当我使用127.0.0.1更改localhost时,会出现以下错误消息:PDO::_construct():服务器请求的身份验证方法对/Users/mac/Desktop/test中的客户端未知[caching_sha2_password]。php:11堆栈跟踪:#0/Users/mac/Desktop/test.php(11):PDO->uu构造('mysql:host=127….','root','FriZerX11')#1{main}下一个PDO异常:SQLSTATE[HY000][2054]服务器请求的身份验证方法在/Users/mac/Desktop/test.php中客户端未知。php:11堆栈跟踪:#0/Users/mac/Desktop/test.php(11):PDO->u构造('mysql:host=127….','root','FriZerX11'){main}@AflaYoussef在公共论坛上展示你的证书时要小心。您可能需要在mysql用户表中创建与PDO连接字符串匹配的“root”@“127.0.0.1”。你应该在这里找到如何做到这一点没有问题。另外:在发布任何类似问题时(尤其是针对苹果),了解操作系统版本以及安装软件时使用的方法会更为有用。不要解决OP的问题,而只是提供另一种方法来解决同一问题。
 $host      = DB_HOST; // just ignore constants //
 $user      = DB_USER;
 $pass      = DB_PASS;
 $dbname    = DB_NAME;

   $dsn = 'mysql:host=' . $host . ';dbname=' . $dbname;
    // Set options
    $options = array(
        PDO::ATTR_PERSISTENT    => true,
        PDO::ATTR_ERRMODE       => PDO::ERRMODE_EXCEPTION
    );
    // Create a new PDO instanace
    try{
         new PDO($dsn, $user, $pass, $options);
    }
    // Catch any errors
    catch(PDOException $e){
        echo $e;
    }