phpmyadmin不提供ui行数选择器,因分页由服务端$cfg['maxrows']静态控制;需手动编辑config.inc.php修改该值,如$cfg['maxrows'] = 50,并重启web服务或清空opcache生效。
phpmyadmin 本身不提供 ui 选择器来动态切换每页显示行数——这个“下拉菜单”或“切换按钮”并不存在,所有分页行为由 $cfg['maxrows'] 静态控制,且仅在配置文件中生效。
为什么找不到“每页显示条数”的下拉框?
从 phpMyAdmin 4.7 到最新 5.2+ 版本,浏览表(Browse)页面顶部的“显示”区域只提供 Next / Prev 分页导航和 Show all 按钮,但没有行数选择器。这是因为:
- 分页逻辑基于 SQL 的
LIMIT+OFFSET,前端无法在不刷新或重发请求的前提下变更每页数量; - 历史设计倾向服务端配置统一管理,避免用户随意设为
10000导致内存溢出或超时; - 官方认为“按需导出”或“用 SQL 查询自定义 LIMIT”比 UI 切换更符合数据库操作习惯。
如何真正修改每页默认显示行数?
必须编辑 phpMyAdmin 的配置文件,修改 $cfg['MaxRows'] 值。常见路径包括:
-
/etc/phpmyadmin/config.inc.php(Debian/Ubuntu 系统包安装) -
/usr/local/phpmyadmin/config.inc.php(源码安装) -
./config.inc.php(Web 根目录下的副本)
在文件中添加或修改这一行:
$cfg['MaxRows'] = 50;
注意:$cfg['MaxRows'] 是全局设置,影响所有表的浏览页;它不会覆盖 SQL 查询中的显式 LIMIT,但会作为 Browse 页面首次加载的默认值。
有没有办法让不同用户看到不同默认值?
不能通过 UI 实现,但可通过服务端逻辑间接支持:
- 如果你用 Nginx/Apache 反向代理 phpMyAdmin,并启用
auth_http或 session 注入,可在入口 PHP 脚本中根据$_SESSION['user_role']动态赋值$cfg['MaxRows']; - 更稳妥的做法是:让用户自己写带
LIMIT的 SQL 查询(如SELECT * FROM users LIMIT 200),结果页会尊重该限制,且不依赖$cfg['MaxRows']; - 某些定制版(如嵌入到 CMS 后台的 phpMyAdmin)会用 JS 注入一个 fake 下拉框,但点击后实际是跳转带
pos=0&session_max_rows=200参数的 URL——这属于二次开发,非原生功能。
容易被忽略的关键点
改完 $cfg['MaxRows'] 后必须重启 Web 服务(如 systemctl restart apache2)或至少清空 OPcache(如果启用了);否则旧值仍可能被缓存。另外,若同时设置了 $cfg['MaxExactCount'] 或启用了 UseDbSearch,大表的行数估算可能变慢——这不是 UI 问题,而是底层 COUNT 逻辑被触发所致。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











