Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 以非Root用户身份连接到MySQL时身份验证失败_Php_Mysql_Lamp - Fatal编程技术网

Php 以非Root用户身份连接到MySQL时身份验证失败

Php 以非Root用户身份连接到MySQL时身份验证失败,php,mysql,lamp,Php,Mysql,Lamp,对于我创建的新用户帐户,我的登录尝试失败了,我花了几个小时学习MySQL如何处理身份验证,但最终我认为我还没有完全理解MySQL服务器的身份验证逻辑中所有组件是如何组合在一起的 都在同一台服务器上: MySQL 5.7 phpMyAdmin 4.9 Ubuntu 18.04 其他信息: 表mysql.user中没有用户名为空的用户 密码没有特殊字符 我尝试了localhost、127.0.0.1和实际主机名本身 /var/log/mysql/error.log只显示完全相同的错误消息 创

对于我创建的新用户帐户,我的登录尝试失败了,我花了几个小时学习MySQL如何处理身份验证,但最终我认为我还没有完全理解MySQL服务器的身份验证逻辑中所有组件是如何组合在一起的

都在同一台服务器上:

  • MySQL 5.7

  • phpMyAdmin 4.9

  • Ubuntu 18.04

其他信息:

  • 表mysql.user中没有用户名为空的用户

  • 密码没有特殊字符

  • 我尝试了localhost、127.0.0.1和实际主机名本身

  • /var/log/mysql/error.log只显示完全相同的错误消息

创建用户

这可通过以下方式实现:

  • phpMyAdmin GUI>SQL选项卡:
  • phpMyAdmin GUI>用户帐户选项卡>添加用户帐户

  • ssh到Ubuntu服务器并从mysql命令行创建用户(作为root用户)

  • 不管我怎么做,我都可以成功创建用户,但我无法进行身份验证

    验证用户身份

    以下是我尝试过的两种方法:

    1) 从Ubuntu服务器上的ssh会话:

    • mysql-u testuser-p

    • mysql-u testuser-h 127.0.0.1-p

    • mysql-u testuser-h localhost-p

    • mysql-u testuser-h-p

    2) 使用(IE/Chrome/FF)从另一台计算机运行connect.php:


    尝试授予如下权限:

    GRANT ALL ON inventory.* TO 'testuser'@'localhost';
    

    拒绝访问表示您的用户名或密码不正确。如果php脚本在远程计算机上运行,并且您提供localhost作为dbhost,则您正在连接到运行php脚本的计算机上的mysql。这可以解释拒绝访问的原因。那个ssh会话对我来说也是可疑的,我不认为你连接到了mysql服务器,你认为你连接到了mysql服务器。@Shadow它是错误的服务器。我想你一个星期只能被解雇三次,所以我没有超出这个限度。谢谢我建议你删除这个问题
    <?php
    
    $dbhost='localhost';
    $dbuser='testuser';
    $dbpass='password';
    $dbname='inventory';
    
    $conn = new mysqli($dbhost,$dbuser,$dbpass,$dbname);
    
    if($conn->connect_error) {
        die("Error: Couldn't connect: ".$conn->connect_error);
    }
    
    ?>
    
    GRANT ALL ON inventory.* TO 'testuser'@'localhost';