php - 拒绝用户 'admin' @'localhost' mysql 的访问

标签 php mysql pdo

我通过以下方式创建了一个数据库:

create database test_db;

然后我通过以下方式创建了一个用户:

CREATE USER 'test_user'@'test_db' IDENTIFIED BY 'test_pass';
grant all privileges on *.* to 'test'@'test';

现在,当我尝试通过 PHP 连接到它时,我使用了以下代码:

    $hostname_localhost ="localhost";  
    $database_localhost ="test_db";  
    $username_localhost ="test_user";  
    $password_localhost ="test_pass";  
    try{
        $dbh = new PDO("mysql:host=$hostname_localhost;dbname=$database_localhost",$username_localhost,$password_localhost);
        echo 'Connected to DB'.'<br />';
        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $stmt = $dbh->prepare("SELECT user,host from mysql.user");
        $stmt->execute();

        $result = $stmt->fetchAll();

        foreach($result as $row)
        {
            echo $row['user'].'@'.$row['host'].'<br />';
        }

        $dbh = null;
    }
    catch(PDOException $e)
    {
        echo $e->getTraceAsString().$e->getLine().$e->getMessage();
    }

我收到以下错误:

SQLSTATE[28000] [1045] 拒绝用户 'test_user'@'localhost' 的访问(使用密码:YES)

请告诉我如何解决这个问题。我如何通过 PHP 连接到我的测试用户。

最佳答案

您的创建用户/授权应该是:

CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'test_pass';
grant all privileges on test_db.* to 'test_user'@'localhost';

我还注意到您的 SQL Select 语句来自 mysql.user。如果您希望 test_user 有权访问该数据库的查询,则需要另一个 GRANT 语句或更改 grant 语句中的 test_db 部分到 *. 我不确定您的用例是什么或者您需要什么,但请注意。

创建用户的语法如下:

CREATE USER 'username'@'host_or_IPAddress' IDENTIFIED BY 'password';

对于授予它是(省略了一些项目,请阅读引用资料以获得更深入的选项/信息):

GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'samehostascreateuser';

供您引用/阅读:MySQL Create UserMysql Grant Syntax

关于php - 拒绝用户 'admin' @'localhost' mysql 的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20055057/

相关文章:

php - mysql 代码中重复输入 key 'PRIMARY'

php - 在 php 的 postgresql bytea 列中插入 pdf/images

PHP/MYSQL 问题 - 查询搜索随机失败

php - 我可以在 PHP 中混合使用 MySQL API 吗?

PHP转Mysql换行问题

javascript - 基于 MySql 数据的单选按钮值更改

php - 单击按钮更新 SQL 表

具有 2 个表的 MySQL 查询

php - 在 php drupal 7 中使用 é 作为列名进行查询

php - 用 PDO 和准备好的语句替换 mysql_* 函数