[英]Authentication Failure When Connecting to MySQL as Non-Root User
我创建的新用户帐户的登录尝试失败了,我花了几个小时学习 MySQL 如何处理身份验证,但最终我认为我只是不完全了解 MySQL 服务器的身份验证逻辑的所有组件如何组合在一起.
都在同一台服务器上:
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 session :
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'@'%' 的访问被拒绝(使用密码:YES)
用户'testuser'@'localhost'的访问被拒绝(使用密码:是)
为了排除这是权限问题,我为用户分配了所有全局权限,但错误消息没有更改,因此我恢复了更改。
运行select host,user,plugin,authentication_string,account_locked from mysql.user where user='testuser';
显示:
主机本地主机
用户测试用户
插件mysql_native_password
身份验证字符串 blahblahblah
account_locked N
尝试授予这样的权限:
GRANT ALL ON inventory.* TO 'testuser'@'localhost';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.