这个问题在这里已经有答案了:
在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条答案
按热度按时间k4aesqcs1#
如果您正在windows上运行,您可以通过运行msi重新配置安装来更改身份验证。它将要求将默认身份验证更改为传统身份验证,然后您可以继续使用该选项将身份验证更改为传统身份验证。
izkcnapc2#
新的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
42fyovps3#
我曾经
ALTER USER root@localhost IDENTIFIED WITH mysql_native_password BY 'PASSWORD';
成功了mnowg1ta4#
我通过以下方法解决了这个问题:
进入system preferences->mysql
选择“初始化数据库”并输入新的根密码,选择“使用旧密码加密”。
使用新密码登录phpmyadmin。
oyjwcjzk5#
我去了系统
首选项->mysql->初始化数据库->使用旧密码加密(而不是强)->输入相同的密码
作为我的
config.inc.php
文件,重新启动apache服务器,它就工作了。我仍然对此持怀疑态度,所以我停止了apache和mysql服务器,并再次启动它们,现在它开始工作了。kqhtkvqz6#
我用mysql 8.0.12解决了这个问题:
lsmepo6l7#
我有这个问题,没有在windows中找到任何ini文件,但解决方法对我来说非常简单。
1打开mysql安装程序。
2重新配置mysql服务器,这是第一个环节。
三。转到身份验证方法。
4选择“传统身份验证”。
5提供密码(下一个字段)。
6应用更改。
就这样,希望我的解决方案也能很好地为您服务!
9lowa7mx8#
使用创建另一个用户
mysql_native_password
选项:在终端:
5w9g7ksd9#
在我的例子中,为了解决这个问题,我更喜欢创建一个新用户来与phpmyadmin一起使用,因为修改根用户会导致其他应用程序(如mysql workbench)出现本机登录问题。
我就是这么做的:
使用root用户登录mysql控制台:
mysql -u root -p
,输入密码。让我们在mysql shell中创建一个新用户:
在这一点上
newMysqlUsername
没有权限对数据库执行任何操作。因此需要为用户提供访问所需信息的权限。完成要为新用户设置的权限后,请务必重新加载所有权限。
键入退出
quit
或者\q
,您的更改现在将生效,我们可以使用新用户登录phpmyadmin,它将可以访问数据库。您还可以在终端中使用以下命令重新登录:
5cnsuln710#
通过命令行登录,之后就可以工作了。
eit6fx6z11#
我通过以下方法解决了这个问题:
添加
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;
使用新用户登录phpmyadminpw9qyyiw12#
为了解决这个问题,我只在我的数据库中运行了一个查询
mysql
慰问。使用以下命令登录mysql控制台
在此之后,我只运行一个给定的查询below:-
当我运行这个查询时,我得到了执行查询的消息。然后使用用户名/密码登录到phpmyadmin。
beq87vna13#
另一个想法是:只要phpmyadmin和其他php工具不能使用它,就把这一行添加到文件/etc/mysql/my.cnf中
另请参见:mysql ref
我知道这是一个安全问题,但是如果这些工具不能缓存\u sha2 \u密码怎么办?
hgtggwj014#
使用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插件
dw1jzc5e15#
我基本上用安德烈解决了我的问题á回答:
1-使用root用户登录mysql控制台:
并键入根用户的密码进行身份验证。
2-我创建了一个新用户:
3-向新用户授予所有权限:
4-使用密码更改验证插件:
现在,phpmyadmin可以很好地记录新用户。