访问被拒绝给localhost / phpmyadmin(HY000 / 1130)特权错误

时间:2019-06-27 11:34:46

标签: php mysql phpmyadmin xampp database-connection

我在本地主机上有一个简单的数据库,并且正在看书

我在其中创建了表,但是在使用共享文件地址(即包括['SERVER_DOCUMENT'].'path of file'之后),对PHPMyAdmin的访问被拒绝。

IT表示:

  

无法连接:无效的设置。       mysqli_real_connect():(HY000 / 1130):不允许主机“ localhost”连接到此MariaDB服务器       在配置中定义的controluser的连接失败。       mysqli_real_connect():(HY000 / 1130):不允许主机“ localhost”连接到此MariaDB服务器       phpMyAdmin尝试连接到MySQL服务器,服务器拒绝连接。您应该检查配置中的主机,用户名和密码,并确保它们与MySQL服务器管理员提供的信息相对应。

我尝试卸载XAMPP,但是当我在书中再次达到同一点并从开始做起一切时,它仍然做同样的事情

<?php
try {
  $pdo = new PDO('mysql:hostname=localhost;dbname=ijdb', 'ijdbuser', 'mypassword');
  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $pdo->exec('SET NAMES "utf8"');
}
catch (PDOException $e) {
  $error = 'Unable to connect to server' . $e->getMessage();
  include 'error.html';
  exit();
}
?>

index.php

<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/includes/magicquotes.inc.php';
if (isset($_GET['addjoke'])) {
  include 'form.html';
  exit();
}
include $_SERVER['DOCUMENT_ROOT'] . '/includes/db.inc.php';

if (isset($_POST['joketext'])) {
  try {
    $sql = 'INSERT INTO joke SET
        joketext = :joketext,
        jokedate = CURDATE()';
    $s = $pdo->prepare($sql);
    $s->bindValue(':joketext', $_POST['joketext']);
    $s->execute();
  } catch (PDOException $e) {
    $error = 'Error adding submitted joke: ' . $e->getMessage();
    include 'error.html';
    exit();
  }
  header('Location: .');
  exit();
}
if (isset($_GET['deletejoke'])) {
  include $_SERVER['DOCUMENT_ROOT'] . '/includes/db.inc.php';
  try {
    $sql = 'DELETE FROM joke WHERE id = :id';
    $s = $pdo->prepare($sql);
    $s->bindValue(':id', $_POST['id']);
    $s->execute();
  } catch (PDOException $e) {
    $error = 'Error deleting joke: ' . $e->getMessage();
    include 'error.html';
    exit();
  }
  header('Location: .');
  exit();
}
include $_SERVER['DOCUMENT_ROOT'] . '/includes/db.inc.php';

try {
  $sql = 'SELECT joke.id,name,email,joketext FROM joke INNER JOIN author ON authorid=author.id';
  $result = $pdo->query($sql);
} catch (PDOException $e) {
  $error = 'Error fetching jokes: ' . $e->getMessage();
  include 'error.html';
  exit();
}
//while ($row = $result->fetch())
foreach ($result as $value) {
  $jokes[] = array(
    'id' => $value['id'], 'text' => $value['joketext'], 'email' => $value['email'], 'name' => $value['name']
  );
}
include 'jokes.html';
?>

我希望我的笑话页面被加载。

这是显示我上面列出的错误的图像:

image

3 个答案:

答案 0 :(得分:1)

在这种情况下,仔细阅读错误消息会有所帮助。

phpMyadmin消息可能是最有用的消息。让我们解析一下。

  

phpMyAdmin尝试连接到MySQL服务器,服务器拒绝了连接。

确定,localhost服务器正在运行。

  

您应在配置中检查主机,用户名和密码

由于某些原因,您输入的用户名/密码组合错误。

  

并确保它们与MySQL服务器管理员提供的信息相对应。

您是该MySQL服务器的管理员。阅读xampp文档,并查找要使用的用户名和密码。在新的xampp安装中,默认的MySQL用户名是(或曾经是)root。默认密码是长度为零的字符串。如果您希望使用与php程序不同的用户名/密码组合,则必须

  • 将该新的用户名/密码组合添加到您的MySQL服务器,并使用旧的用户名从phpmyadmin登录。 Here's a suggestion about that
  • 更新您的db.inc.php文件或您的php应用程序中提供用户名/密码的任何内容。

您的php程序登录到MySQL 。 MySQL是服务器软件,当您使用xampp时,它恰巧在本地计算机上运行。因此,它和MySQL必须在用户名/密码组合上达成共识。

就我而言,我认为您应该重新阅读本书中有关如何设置内容的部分。

答案 1 :(得分:0)

我通过互联网搜索后发现此命令为“ mysqld --skip-grant-tables” 虽然在xampp shell中执行此操作可能不确定重置权限,但是却使我的phpmyadmin页面恢复。

答案 2 :(得分:0)

我尝试在xampp shell中使用“ mysqld --skip-grant-tables”,但这不是永久性的解决方案,因为每当我关闭shell命令窗口时,问题就会再次出现。然后我找到了一个很好的永久解决方案。

您可以看到此处描述了整个过程 https://www.youtube.com/watch?v=vzs9Z12OTE4

希望这将永久解决您的问题。