以非root用户身份连接到MySQL时身份验证失败

时间:2019-09-25 23:03:45

标签: php mysql lamp

对于创建的新用户帐户,我的登录尝试失败,并且花了几个小时来学习MySQL如何处理身份验证,但是最终,我认为我只是不完全了解MySQL的所有组件如何组合在一起服务器的身份验证逻辑。

全部位于同一服务器上

  • MySQL 5.7

  • phpMyAdmin 4.9

  • Ubuntu 18.04

其他信息:

  • 表mysql.user

  • 中没有用户名空白的用户
  • 密码没有特殊字符

  • 我尝试了localhost,127.0.0.1和实际的主机名本身

  • /var/log/mysql/error.log仅显示完全相同的错误消息

创建用户

这可以通过以下任一方式完成:

  1. phpMyAdmin GUI>“ SQL”选项卡:
flush privileges;
create user 'testuser'@'localhost' identified by 'password!';
grant * on inventory to 'testuser'@'localhost';
flush privileges;
  1. phpMyAdmin GUI>用户帐户选项卡>添加用户帐户

  2. ssh进入Ubuntu服务器,并从mysql命令行(以root用户身份)创建用户

无论如何执行,我都可以成功创建用户,但是无法进行身份验证。

授权用户

这是我尝试过的两种方法:

1)在Ubuntu服务器上的ssh会话中:

  • mysql -u testuser -p

  • mysql -u testuser-h 127.0.0.1 -p

  • mysql -u testuser-h localhost -p

  • mysql -u testuser-h -p

2)使用(IE / Chrome / FF)从另一台计算机运行connect.php:

<?php

$dbhost='localhost';
$dbuser='testuser';
$dbpass='password';
$dbname='inventory';

$conn = new mysqli($dbhost,$dbuser,$dbpass,$dbname);

if($conn->connect_error) {
    die("Error: Couldn't connect: ".$conn->connect_error);
}

?>

2) 根据使用的是'testuser'@'%'还是'testuser'@'localhost',我将得到以下两个错误之一:

  • 拒绝用户'testuser'@'%'的访问(使用密码:是)

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

要排除这是一个权限问题,我为用户分配了所有全局权限,但是错误消息没有更改,因此我还原了更改。

运行select host,user,plugin,authentication_string,account_locked from mysql.user where user='testuser';显示:

主机本地主机

用户测试用户

插件 mysql_native_password

authentication_string 等等

帐户已锁定 N

1 个答案:

答案 0 :(得分:0)

尝试像这样授予权限:

GRANT ALL ON inventory.* TO 'testuser'@'localhost';