不能。phpMyAdmin 本身不支持匿名登录,真正的认证由 MySQL/MariaDB 控制;所谓“无密码登录”需在数据库中创建空密码账户(如 ''@'localhost' 或 'root'@'localhost'),并执行 FLUSH PRIVILEGES 生效。
phpMyAdmin 能不能直接用匿名用户登录?
不能。phpmyadmin 本身不支持“匿名登录”——它只是个 web 前端,真正的登录控制在 mysql/mariadb 服务层。所谓“无密码登录”,其实是让 mysql 允许 ''@'localhost'(空用户名 + 空密码)或 'root'@'localhost'(有用户名但密码为空)这类账户通过认证。phpmyadmin 只是把你的登录凭据原样发给数据库,它自己不校验也不绕过密码。
MySQL 中怎么创建/启用空密码的 root 或匿名账户?
必须进 MySQL 命令行(或通过已有高权限账户操作),执行 SQL 修改 mysql.user 表。常见错误是只改了用户名没同步 host,或者忘了刷新权限。
- 检查当前允许的本地登录账户:
SELECT User, Host, authentication_string FROM mysql.user WHERE Host='localhost'; - 如果想让
root本地免密登录(不推荐生产):ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY ''; - 如果真要建“完全匿名”账户(危险!):
CREATE USER ''@'localhost'; GRANT ALL ON *.* TO ''@'localhost' WITH GRANT OPTION; - 无论哪种修改,**必须执行**:
FLUSH PRIVILEGES;,否则配置不生效
phpMyAdmin 连接时提示 #1045 或 “Access denied” 怎么排查?
这几乎全是 MySQL 层拒绝连接,和 phpMyAdmin 配置关系极小。重点查三件事:账户是否存在、host 是否匹配、密码是否为空字符串而非 NULL。
-
''@'localhost'和'root'@'127.0.0.1'是两个不同账户,MySQL 认为它们 host 不同,权限独立 - 空密码 ≠ 密码字段为 NULL;用
SELECT User,Host,plugin,authentication_string FROM mysql.user查看,空密码对应authentication_string是空字符串'',不是NULL - phpMyAdmin 默认尝试用
localhost连接,走 Unix socket;若 MySQL 配置了skip-name-resolve,又没显式定义'user'@'localhost',就会 fallback 到'user'@'127.0.0.1',而后者可能没授权
关闭无密码登录时最容易漏掉哪一步?
删掉账户或设密码后,常有人忘了清理 phpMyAdmin 的 cookie 或浏览器保存的登录信息,导致看起来“还能登”,其实是旧会话没过期。
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
- 先在 MySQL 中禁用:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码'; - 再确认执行了:
FLUSH PRIVILEGES; - 然后清空浏览器里所有 phpMyAdmin 相关 cookie(特别是
phpMyAdmin开头的) - 最后重启 Web 服务(如 Apache/Nginx)和 MySQL —— 某些老版本 MariaDB 在改 auth plugin 后不重启不会加载新逻辑
空密码账户一旦开启,就等于把数据库大门钥匙挂在门把手上;关的时候,得确保锁芯换了、旧钥匙熔了、连门框缝里的划痕都擦干净。