mysql 8.0上的phpmyadmin

vaqhlq81  于 2021-06-15  发布在  Mysql
关注(0)|答案(18)|浏览(433)

这个问题在这里已经有答案了

在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

pkbketx9

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

gpnt7bae

gpnt7bae2#

我通过以下方法解决了这个问题:
进入system preferences->mysql
选择“初始化数据库”并输入新的根密码,选择“使用旧密码加密”。
使用新密码登录phpmyadmin。

mo49yndu

mo49yndu3#

正如许多人在其他答案中指出的,将mysql的默认身份验证插件更改为native就可以做到这一点。
不过,由于我不能使用新的caching\u sha2\u password插件,所以我会等到兼容性开发完成后再讨论这个主题。

smdnsysy

smdnsysy4#

我基本上用安德烈解决了我的问题á回答:
1-使用root用户登录mysql控制台:

root@9532f0da1a2a:/# mysql -u root -pPASSWORD

并键入根用户的密码进行身份验证。
2-我创建了一个新用户:

mysql> CREATE USER 'user'@'hostname' IDENTIFIED BY 'password';

3-向新用户授予所有权限:

mysql> GRANT ALL PRIVILEGES ON *.* To 'user'@'hostname';

4-使用密码更改验证插件:

mysql> ALTER USER user IDENTIFIED WITH mysql_native_password BY 'PASSWORD';

现在,phpmyadmin可以很好地记录新用户。

vxf3dgd4

vxf3dgd45#

如果您使用的是官方的mysql docker容器,那么有一个简单的解决方案:
将以下行添加到docker compose服务:

command: --default-authentication-plugin=mysql_native_password

配置示例:

mysql:
     image: mysql:8
     networks:
       - net_internal
     volumes:
       - mysql_data:/var/lib/mysql
     environment:
       - MYSQL_ROOT_PASSWORD=root
       - MYSQL_DATABASE=db
     command: --default-authentication-plugin=mysql_native_password
noj0wjuj

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; 使用新用户登录phpmyadmin

46scxncf

46scxncf7#

为了解决这个问题,我只在我的数据库中运行了一个查询 mysql 慰问。
使用以下命令登录mysql控制台

mysql -u {username} -p{password}

在此之后,我只运行一个给定的查询below:-

ALTER user '{USERNAME}'@'localhost' identified with mysql_native_password by '{PASSWORD}';

当我运行这个查询时,我得到了执行查询的消息。然后使用用户名/密码登录到phpmyadmin。

kiayqfof

kiayqfof8#

如果您正在windows上运行,您可以通过运行msi重新配置安装来更改身份验证。它将要求将默认身份验证更改为传统身份验证,然后您可以继续使用该选项将身份验证更改为传统身份验证。

2wnc66cl

2wnc66cl9#

在我的例子中,为了解决这个问题,我更喜欢创建一个新用户来与phpmyadmin一起使用,因为修改根用户会导致其他应用程序(如mysql workbench)出现本机登录问题。
我就是这么做的:
使用root用户登录mysql控制台: mysql -u root -p ,输入密码。
让我们在mysql shell中创建一个新用户:

CREATE USER 'newMySqlUsername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysqlNewUsernamePassword';

在这一点上 newMysqlUsername 没有权限对数据库执行任何操作。因此需要为用户提供访问所需信息的权限。

GRANT ALL PRIVILEGES ON * . * TO ' newMySqlUsername'@'localhost';

完成要为新用户设置的权限后,请务必重新加载所有权限。

FLUSH PRIVILEGES;

键入退出 quit 或者 \q ,您的更改现在将生效,我们可以使用新用户登录phpmyadmin,它将可以访问数据库。
您还可以在终端中使用以下命令重新登录:

mysql -u newMySqlUsername -p
de90aj5v

de90aj5v10#

我去了系统
首选项->mysql->初始化数据库->使用旧密码加密(而不是强)->输入相同的密码
作为我的 config.inc.php 文件,重新启动apache服务器,它就工作了。我仍然对此持怀疑态度,所以我停止了apache和mysql服务器,并再次启动它们,现在它开始工作了。

mrfwxfqh

mrfwxfqh11#

我用mysql 8.0.12解决了这个问题:

mysql_upgrade -u root
3pmvbmvn

3pmvbmvn12#

使用创建另一个用户 mysql_native_password 选项:
在终端:

mysql> CREATE USER 'su'@'localhost' IDENTIFIED WITH mysql_native_password BY '123';
mysql> GRANT ALL PRIVILEGES ON * . * TO 'su'@'localhost';
mysql> FLUSH PRIVILEGES;
dnph8jn4

dnph8jn413#

我有这个问题,没有在windows中找到任何ini文件,但解决方法对我来说非常简单。
1打开mysql安装程序。
2重新配置mysql服务器,这是第一个环节。
三。转到身份验证方法。
4选择“传统身份验证”。
5提供密码(下一个字段)。
6应用更改。
就这样,希望我的解决方案也能很好地为您服务!

jum4pzuy

jum4pzuy14#

正如@kgr提到的,mysql 8.0.11对身份验证方法做了一些更改。
我已经打开了一个phpmyadmin错误报告:https://github.com/phpmyadmin/phpmyadmin/issues/14220.
mysql 8.0.4-rc对我来说运行得很好,我觉得mysql在补丁级别的版本中做出这样的改变是很可笑的。

q7solyqu

q7solyqu15#

使用root用户登录mysql控制台:

root@9532f0da1a2a:/# mysql -u root -pPASSWORD

并使用此处的密码更改身份验证插件:

mysql> ALTER USER root IDENTIFIED WITH mysql_native_password BY 'PASSWORD';
Query OK, 0 rows affected (0.08 sec)

您可以在mysql 8.0参考手册中阅读更多关于首选身份验证插件的信息
https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-缓存-sha2-密码
它在一个停靠的环境中完美地工作:

docker run --name mysql -e MYSQL_ROOT_PASSWORD=PASSWORD -p 3306:3306 -d mysql:latest

docker exec -it mysql bash

mysql -u root -pPASSWORD

ALTER USER root IDENTIFIED WITH mysql_native_password BY 'PASSWORD';

exit

exit

docker run --name phpmyadmin -d --link mysql:db -p 8080:80 phpmyadmin/phpmyadmin:latest

因此,您现在可以在上登录到phpmyadminhttp://localhost:8080,带root/密码
mysql/mysql服务器
如果您使用的是mysql/mysql服务器docker映像
但请记住,它只是开发环境中的一个“快速而肮脏”的解决方案。更改mysql首选的身份验证插件是不明智的。

docker run --name mysql -e MYSQL_ROOT_PASSWORD=PASSWORD -e MYSQL_ROOT_HOST=% -p 3306:3306 -d mysql/mysql-server:latest
docker exec -it mysql mysql -u root -pPASSWORD -e "ALTER USER root IDENTIFIED WITH mysql_native_password BY 'PASSWORD';"
docker run --name phpmyadmin -d --link mysql:db -p 8080:80 phpmyadmin/phpmyadmin:latest

2018年4月10日更新的解决方案
通过取消注解 default_authentication_plugin=mysql_native_password 正在设置 /etc/my.cnf 使用风险自负

docker run --name mysql -e MYSQL_ROOT_PASSWORD=PASSWORD -e MYSQL_ROOT_HOST=% -p 3306:3306 -d mysql/mysql-server:latest
docker exec -it mysql sed -i -e 's/# default-authentication-plugin=mysql_native_password/default-authentication-plugin=mysql_native_password/g' /etc/my.cnf
docker stop mysql; docker start mysql
docker run --name phpmyadmin -d --link mysql:db -p 8080:80 phpmyadmin/phpmyadmin:latest

2019年1月30日更新的解决方案

docker run --name mysql -e MYSQL_ROOT_PASSWORD=PASSWORD -e MYSQL_ROOT_HOST=% -p 3306:3306 -d mysql/mysql-server:latest
docker exec -it mysql sed -i -e 's/# default-authentication-plugin=mysql_native_password/default-authentication-plugin=mysql_native_password/g' /etc/my.cnf
docker exec -it mysql mysql -u root -pPASSWORD -e "ALTER USER root IDENTIFIED WITH mysql_native_password BY 'PASSWORD';"
docker stop mysql; docker start mysql
docker run --name phpmyadmin -d --link mysql:db -p 8080:80 phpmyadmin/phpmyadmin:latest

默认\u身份验证\u插件

相关问题