更新:由于未在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。如果有人可以帮忙,那我就没什么主意了。