phpmyadmin 无法限制远程服务器导入大小,真正起作用的是 php 的 upload_max_filesize 和 post_max_size、phpmyadmin 的 $cfg['maximportfilesize'] 与 uploaddir 配置、mysql 的 max_allowed_packet 三重限制,需逐层检查并同步调整。
phpmyadmin 本身不提供“限制远程服务器导入大小”的能力——它只管自己能接收多大的文件,而远程服务器(如 mysql)的导入行为完全由 sql 执行过程控制,不受 phpmyadmin 界面参数约束。真正起作用的是 php 层上传限制、phpmyadmin 内部校验、以及 mysql 自身的 max_allowed_packet 配置。下面分三块说清楚怎么做、为什么、以及最容易翻车的地方。
修改 PHP 的 upload_max_filesize 和 post_max_size
这是最常被忽略的第一道关卡。即使你把 phpMyAdmin 的 $cfg['MaxImportFileSize'] 设成 500M,只要 PHP 拒绝接收超过 2M 的 POST 数据,页面连文件都收不到,直接报错 No data was received to import。
-
upload_max_filesize必须 ≥ 你期望导入的 .sql 文件大小(单位:M 或 G,如64M) -
post_max_size必须 ≥upload_max_filesize(PHP 实际取二者较小值生效) - 改完后必须重启 Web 服务(
systemctl restart apache2或systemctl restart php-fpm nginx) - 验证方式:访问 phpMyAdmin 根目录下新建的
info.php(内容为<?php phpinfo(); ?>),搜索确认两项值已更新
设置 $cfg['MaxImportFileSize'] 并启用 UploadDir
这个配置只影响 phpMyAdmin 导入页显示的提示和前端校验,不改变 PHP 底层限制,但它是绕过浏览器上传瓶颈的关键。
- 在
config.inc.php中添加或修改:$cfg['MaxImportFileSize'] = '128M';(注意:字符串格式,带单位) - 同时启用服务器端文件选择功能:
$cfg['UploadDir'] = 'upload'; - 在 phpMyAdmin 根目录手动创建
upload/目录,并确保 Web 进程有读权限(如chown www-data:www-data upload) - 把大 SQL 文件用 FTP / SCP 传到
upload/下,再通过 phpMyAdmin 导入页的下拉菜单选中——此时走的是服务器本地读取,不再经过 HTTP 上传流程
检查 MySQL 的 max_allowed_packet
即使文件成功上传并提交,MySQL 在解析执行超长 INSERT 或大 BLOB 时仍可能中断,报错类似 Got a packet bigger than 'max_allowed_packet' bytes。这和 phpMyAdmin 无关,是 MySQL 服务端配置。
- 登录 MySQL 执行:
SHOW VARIABLES LIKE 'max_allowed_packet'; - 临时调高(当前会话有效):
SET GLOBAL max_allowed_packet = 268435456;(即 256MB) - 永久生效需修改 MySQL 配置文件(如
/etc/mysql/my.cnf的[mysqld]段):max_allowed_packet = 256M - 重启 MySQL:
systemctl restart mysql - 注意:该值不能超过 MySQL 编译时设定的硬上限(通常为 1G),且客户端连接也受此限制影响
真正麻烦的点不在某一个配置,而在于这三层限制(PHP 上传 → phpMyAdmin 解析 → MySQL 执行)像漏斗一样层层收紧,任意一层卡住都会失败,且错误提示往往模糊指向“文件没收到”。调试时建议按顺序验证:先确认 PHP 能收,再确认 phpMyAdmin 能读,最后确认 MySQL 能执行——别一上来就改 config.inc.php。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











