在 PythonAnywhere 上导出数据库脚本时,你是否直接使用过这个命令:
mysqldump -u <你的用户名> -p '<你的用户名>$<数据库名>' > backup.sql
然后就遇到了这样的错误?
Access denied; you need (at least one of) the PROCESS privilege
甚至还有:
Unknown table 'COLUMN_STATISTICS' in information_schema
别慌,这不是你的问题,而是 版本冲突 + 权限不足 导致的。 接下来我直接给你解决方案,三个参数搞定,立马成功导出。

一、导出数据库脚本
✅ 标准命令格式
mysqldump -u <你的用户名> -h <你的用户名>.mysql.pythonanywhere-services.com \--set-gtid-purged=OFF \--no-tablespaces \--column-statistics=0 \'<你的用户名>$<数据库名>' > backup.sql
💡 注意:这是一整条命令,上面的 \ 只是换行符,实际输入时可以不换行。

📖 参数详解
-u <你的用户名> & -h <你的用户名>.mysql.pythonanywhere-services.com:
这是 PythonAnywhere 要求的正确连接方式,需要在 Databases 标签页查看你的具体信息。
--set-gtid-purged=OFF:
这是官方文档推荐的选项,用于避免在导出文件中包含 GTID(全局事务标识符)信息,从而防止在导入时可能出现的冲突。
--no-tablespaces:
这个参数会指示 mysqldump 跳过导出表空间(Tablespace)相关的语句,从而避免了因权限不足 (PROCESS) 而触发的错误。
--column-statistics=0:
这个参数会禁用客户端导出列统计信息的功能,完美解决了高版本客户端与低版本服务器之间的兼容性问题。
'<你的用户名>$<数据库名>':
数据库名需要完全按照 PythonAnywhere 的格式,并用单引号括起来,以防止 $ 被 Shell 错误解析。

🧪 我的案例
比如,我的用户名是:lilipo,数据库名是:lilipo$test
那么备份命令就是:
mysqldump -u lilipo -h lilipo.mysql.pythonanywhere-services.com \--set-gtid-purged=OFF \--no-tablespaces \--column-statistics=0 \'lilipo$test' > test_backup.sql
打开 PythonAnywhere 的 Bash 控制台,执行上面命令,稍等片刻,test_backup.sql 就导出成功了。

二、压缩数据库脚本文件
导出的 .sql 文件通常较大,直接下载很慢。建议先用 zip 压缩:
zip -9 test_backup.zip test_backup.sql
📖 参数详解
·-9 表示最高压缩比(文件最小,速度稍慢)
·如果不指定 -9,默认压缩级别是 6(速度和体积平衡)
💡 如果系统没有 zip 命令,可以用 gzip: gzip test_backup.sql → 生成 test_backup.sql.gz

三、删除原文件(可选)
压缩成功后,可以删除原始的 .sql 文件以节省空间:
⚠️ 删除前请确认 .zip 文件已正确生成,并且能正常解压。

四、下载到本地
在 PythonAnywhere 网页端 Files 页面,直接点击压缩包即可下载。
-- End --
如果这篇文章帮到了你,欢迎点赞、收藏、转发给更多被 mysqldump 折磨的朋友 😄