【问题标题】:Giving permissions to user doesn’t work in MySQL授予用户权限在 MySQL 中不起作用
【发布时间】:2012-11-30 06:35:23
【问题描述】:

我在phpMyAdmin 中执行了这个。

我执行了这些行:

CREATE USER root IDENTIFIED BY PASSWORD '';

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

我在尝试连接时得到这个:

连接失败:SQLSTATE[HY000] [1045] 用户 'root'@'localhost' 的访问被拒绝(使用密码:否)

$dsn = 'mysql:dbname=one';
$user = 'root';
$password = '';
$pdo = "Not set";
try{
    $pdo=new PDO($dsn, $user, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
}
catch(Exception $ex){
    echo "Connect failed: " . $ex->getMessage();
}

请注意,上面的连接曾经可以工作..现在不行了(因为我切换到 XAMPP)。

【问题讨论】:

  • 我再次测试它,我得到了这个:host=127.0.0.1。它适用于数字,但不适用于本地主机。但是,当我到达 localhost 时,我会像这样到达它: localhost:82 。这可能是它不起作用的原因..因为我没有包含端口号..当我用 ip 接近它时它可以工作吗?
  • 你为什么要创建用户root?它应该始终存在,因此无需创建它。

标签: php mysql


【解决方案1】:

您确定 root 用户没有密码吗?您是否安装了PhpMyAdmin 来检查这个?

如果问题不在于权限,那么它可能是端口。 MySQL 的默认端口是 3306,所以如果你的 MySQL 端口现在是 82,你必须在连接中添加端口。

【讨论】:

    【解决方案2】:

    主机% 不适用于localhost。您需要单独授予 localhost 的权限。

    【讨论】:

      【解决方案3】:

      您是否在更改权限后刷新权限?

      您应该执行FLUSH PRIVILEGES; 来告诉服务器重新加载授权表。

      【讨论】:

        【解决方案4】:

        请检查create user specification,看来您应该为帐户名使用另一种语法

        • 帐户名称的语法是 'user_name'@'host_name'。

        所以,类似CREATE USER 'root'@'localhost' IDENTIFIED BY PASSWORD '';。 在你的情况下CREATE USER 'root'@'%';,但我真的不建议将'%' 用于root 用户。

        【讨论】:

        • 我认为这与端口有关..我认为我应该连接 localhost:82,而不是 localhost
        • localhost 和 127.0.0.1 相似,因此,如果您的连接使用 127.0.0.1 就足够了。
        • 另外,如果没有帮助,请检查stackoverflow.com/questions/1435445/… 认可的答案。这些答案包含我们尝试通过 PDO 连接到 DB 时使用的不同 DSN 的有用信息
        猜你喜欢
        • 2015-05-24
        • 1970-01-01
        • 1970-01-01
        • 2020-11-22
        • 2014-03-14
        • 1970-01-01
        • 1970-01-01
        • 2019-10-03
        • 2015-11-27
        相关资源
        最近更新 更多