为什么 phpmyadmin 连接到 mysql 时出错?

Why error in phpmyadmin connecting to mysql?

运行 php我本地的 myadmin ubuntu 18 我收到错误

#1698 - Access denied for user 'root'@'localhost'

但是在文件中 /etc/phpmyadmin/config.inc.php 我更改了连接参数以将默认用户转义为:

$dbuser='MYUSER';
$dbpass='MYPASSWORD';
$basepath='';
$dbname='phpmyadmin';
$dbserver='localhost';
$dbport='3306';
$dbtype='mysql';

在 MYUSER/MYPASSWORD 下,我从我的 php 应用程序连接到我的 sql。 在 information_schema 我 运行

GRANT ALL PRIVILEGES ON * . * TO 'lardev'@'localhost'

输出:

Query executed OK, 0 rows affected.

为什么错误消息中引用了 root 用户以及如何修复错误?

谢谢!

您输入 config.inc.php 的变量不是 phpMyAdmin 的正确变量。您可以参考 sample configuration files, documentation on all configuration directives, or the file config.sample.inc.php that should be included with your download (or can be viewed at Github) 以获取有关正确语法的详细信息。

官方默认使用一种名为cookie的身份验证类型,当您尝试登录时会提示您输入用户名和密码(您可以看到这个in action on the demo server)。您的描述听起来好像没有提示您输入用户名,这意味着有人已更改为 'config' 身份验证类型,并使用 $cfg['Servers'][$i]['auth_type'] = 'config'; 之类的指令 相关差异(除了安全性和您如何进行日志记录in)是用auth_typeconfig,还需要在配置文件中设置用户名和密码。使用 auth_type cookie 或 http,不会使用这些值。

尽管如此,这里是 config.inc.php 的更正版本,使用您列出的配置,使用 phpMyAdmin 变量名称:

<?php

$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'MYUSER';
$cfg['Servers'][$i]['password'] = 'MYPASSWORD';

'localhost' 是默认的主机名,which forces the connection to use sockets rather than TCP/IP networking,所以端口被忽略了。要使用 TCP/IP 连接,请设置 $cfg['Servers'][$i]['host'] = '127.0.0.1';

其他变量 $basepath、$dbname 和 $dbtype 没有直接等同于 phpMyAdmin。

此外,请注意,我建议在任何情况下使用 auth_type cookie 而不是配置,如果您的 Web 服务器将 phpMyAdmin 提供给不是来自本地主机的连接(作为一种安全措施,否则任何拥有 URL 可以直接访问您的数据库)。