这个问题在这里已经有答案了:
在phpmyadmin中使用sha256设置用户密码后拒绝访问(3个答案)
12个月前关门了。
更新
phpmyadmin的更新版本解决了这个问题。我已经成功地用phpMyAdmin5.0.1进行了测试
我已经安装了mysql 8.0服务器和phpmyadmin,但是当我尝试从浏览器访问它时,会出现以下错误:
# 2054 - The server requested authentication method unknown to the client
mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password]
mysqli_real_connect(): (HY000/2054): The server requested authentication method unknown to the client
我想这一定与实现的强密码和mysql版本的相对新鲜度有关。
但我对最先进的驱动程序和连接配置一无所知。
有人面对同样的问题并解决了吗d
18条答案
按热度按时间pkbketx91#
新的mysql 8.0.11正在使用
caching_sha2_password
作为默认身份验证方法。我认为phpmyadmin不能理解这种身份验证方法。您需要使用一种旧的身份验证方法创建用户,例如。CREATE USER xyz@localhost IDENTIFIED WITH mysql_native_password BY 'passw0rd'
.这里有更多https://dev.mysql.com/doc/refman/8.0/en/create-user.html 这里呢https://dev.mysql.com/doc/refman/8.0/en/authentication-plugins.html
gpnt7bae2#
我通过以下方法解决了这个问题:
进入system preferences->mysql
选择“初始化数据库”并输入新的根密码,选择“使用旧密码加密”。
使用新密码登录phpmyadmin。
mo49yndu3#
正如许多人在其他答案中指出的,将mysql的默认身份验证插件更改为native就可以做到这一点。
不过,由于我不能使用新的caching\u sha2\u password插件,所以我会等到兼容性开发完成后再讨论这个主题。
smdnsysy4#
我基本上用安德烈解决了我的问题á回答:
1-使用root用户登录mysql控制台:
并键入根用户的密码进行身份验证。
2-我创建了一个新用户:
3-向新用户授予所有权限:
4-使用密码更改验证插件:
现在,phpmyadmin可以很好地记录新用户。
vxf3dgd45#
如果您使用的是官方的mysql docker容器,那么有一个简单的解决方案:
将以下行添加到docker compose服务:
配置示例:
noj0wjuj6#
我通过以下方法解决了这个问题:
添加
default_authentication_plugin = mysql_native_password
到[mysqld]my.cnf的部分
进入mysql并通过如下操作创建一个新用户
CREATE USER 'root'@'localhost' IDENTIFIED BY 'password';
必要时授予特权。例如。GRANT ALL PRIVILEGES ON * . * TO 'root'@'localhost';
然后FLUSH PRIVILEGES;
使用新用户登录phpmyadmin46scxncf7#
为了解决这个问题,我只在我的数据库中运行了一个查询
mysql
慰问。使用以下命令登录mysql控制台
在此之后,我只运行一个给定的查询below:-
当我运行这个查询时,我得到了执行查询的消息。然后使用用户名/密码登录到phpmyadmin。
kiayqfof8#
如果您正在windows上运行,您可以通过运行msi重新配置安装来更改身份验证。它将要求将默认身份验证更改为传统身份验证,然后您可以继续使用该选项将身份验证更改为传统身份验证。
2wnc66cl9#
在我的例子中,为了解决这个问题,我更喜欢创建一个新用户来与phpmyadmin一起使用,因为修改根用户会导致其他应用程序(如mysql workbench)出现本机登录问题。
我就是这么做的:
使用root用户登录mysql控制台:
mysql -u root -p
,输入密码。让我们在mysql shell中创建一个新用户:
在这一点上
newMysqlUsername
没有权限对数据库执行任何操作。因此需要为用户提供访问所需信息的权限。完成要为新用户设置的权限后,请务必重新加载所有权限。
键入退出
quit
或者\q
,您的更改现在将生效,我们可以使用新用户登录phpmyadmin,它将可以访问数据库。您还可以在终端中使用以下命令重新登录:
de90aj5v10#
我去了系统
首选项->mysql->初始化数据库->使用旧密码加密(而不是强)->输入相同的密码
作为我的
config.inc.php
文件,重新启动apache服务器,它就工作了。我仍然对此持怀疑态度,所以我停止了apache和mysql服务器,并再次启动它们,现在它开始工作了。mrfwxfqh11#
我用mysql 8.0.12解决了这个问题:
3pmvbmvn12#
使用创建另一个用户
mysql_native_password
选项:在终端:
dnph8jn413#
我有这个问题,没有在windows中找到任何ini文件,但解决方法对我来说非常简单。
1打开mysql安装程序。
2重新配置mysql服务器,这是第一个环节。
三。转到身份验证方法。
4选择“传统身份验证”。
5提供密码(下一个字段)。
6应用更改。
就这样,希望我的解决方案也能很好地为您服务!
jum4pzuy14#
正如@kgr提到的,mysql 8.0.11对身份验证方法做了一些更改。
我已经打开了一个phpmyadmin错误报告:https://github.com/phpmyadmin/phpmyadmin/issues/14220.
mysql 8.0.4-rc对我来说运行得很好,我觉得mysql在补丁级别的版本中做出这样的改变是很可笑的。
q7solyqu15#
使用root用户登录mysql控制台:
并使用此处的密码更改身份验证插件:
您可以在mysql 8.0参考手册中阅读更多关于首选身份验证插件的信息
https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-缓存-sha2-密码
它在一个停靠的环境中完美地工作:
因此,您现在可以在上登录到phpmyadminhttp://localhost:8080,带root/密码
mysql/mysql服务器
如果您使用的是mysql/mysql服务器docker映像
但请记住,它只是开发环境中的一个“快速而肮脏”的解决方案。更改mysql首选的身份验证插件是不明智的。
2018年4月10日更新的解决方案
通过取消注解
default_authentication_plugin=mysql_native_password
正在设置/etc/my.cnf
使用风险自负2019年1月30日更新的解决方案
默认\u身份验证\u插件