使用PHP代码

时间:2019-05-14 17:13:05

标签: php mysql access-denied error-code

更新:由于未在mysqli()函数中指定端口,因此此问题已解决。这个问题与授予权限无关,并且与匿名用户无关,正如我的问题被重复标记所声称的那样。

连接到MySQL本地实例时,配置中需要一个端口,必须将其指定为参数。即

$mysqli =  new mysqli('localhost:3306','user','PASSWORD', 
'accounts');

我正在尝试创建一个验证注册表单,该表单使用PHP代码连接到MySQL数据库。

我可以使用MySQL工作台和phpmyadmin上的apache服务器登录,同时使用root和另一个用户名,并且每个用户名均使用不同的密码。但是,当我尝试通过我的php代码打开与这些平台之一的连接,然后在表单验证中点击“提交”。我收到错误代码

  

拒绝用户'root'@'localhost'的访问(使用密码:是)。

这个问题不是重复的,因为从这些结果中可以看出,我的名单中没有匿名用户。

mysql> select user, host FROM mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| bencleary        | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+

我100%确信密码正确,并且我一直在StackOverflow和其他站点上搜索一段时间以尝试找到答案,但找不到答案。

<?php
 session_start();
 $_SESSION['message'] = '';

 $mysqli =  new mysqli('localhost','user','PASSWORD', 
    'accounts');

 if($mysqli)
  {echo(mysqli_connect_error());}

 if($_SERVER['REQUEST_METHOD'] == 'POST') {

       //two passwords equal to each other
    if($_POST['password'] == $_POST['confirmpassword']) {
      $username = $mysqli -> 
                          real_escape_string($_POST['username']);
      $email = $mysqli- 
                       >real_escape_string($_POST['email']);
        echo($email);
        $password = password_hash($_POST['password']); // hash 
                                                           password
        $sql = "INSERT INTO Users (username, email, 
                    password) 
                    VALUES('$username','$email','$password')";

        $_SESSION['username'] = $username;


        if($mysqli->query($sql)===true){
            $_SESSION['message'] = "Registration 
                      succesful! Added $username to the database.";
        }
        else{
            $_SESSION['message'] = '$username was 
                            not added to the database!';
        }

  }
         else{
        $_SESSION['message'] = "Two passwords do not 
                    match!";
     }
}

我使用的是“用户”而不是“ root”登录。我已授予用户和root的所有权限。我尝试将主机更改为IP地址以及localhost。如果有人可以帮忙,那我就没什么主意了。

0 个答案:

没有答案