我的登录尝试因我创建的新用户帐户而失败,并且我花了几个小时来学习MySQL如何处理身份验证,但最终我认为我只是不完全了解MySQL Server的所有组件如何组合在一起。验证逻辑。
全部位于同一服务器上:
MySQL 5.7
phpMyAdmin 4.9
Ubuntu 18.04
其他信息:
表mysql.user中没有用户名空白的用户
密码没有特殊字符
我尝试过localhost,127.0.0.1和实际的主机名本身
/ var / log / mysql / error.log仅显示完全相同的错误消息
创建用户
这可以通过以下任一方式完成:
flush privileges;
create user 'testuser'@'localhost' identified by 'password!';
grant * on inventory to 'testuser'@'localhost';
flush privileges;
phpMyAdmin GUI>用户帐户选项卡>添加用户帐户
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';
显示:
主机本地主机
user testuser
plugin mysql_native_password
authentication_string blahblahblah
帐户已锁定 N