MySQL 导入:PhpMyAdmin 不允许我访问“information_schema”

Posted

技术标签:

【中文标题】MySQL 导入:PhpMyAdmin 不允许我访问“information_schema”【英文标题】:MySQL Import: PhpMyAdmin won't let me access 'information_schema' 【发布时间】:2016-02-14 11:34:21 【问题描述】:

不久前,我将我的 mysql 数据库备份(导出)到一个 .sql 文件中。当我这样做时,它也从该数据库中导出了 information_schema——尽管我并不真正想要它。 (除非出于某种原因我需要 information_schema。)现在,我在一个单独的 phpmyadmin 帐户上,尝试导入我的 .sql 文件,但这样做我得到:

1044 - 用户 'sql595249'@'%' 拒绝访问数据库 'information_schema'

这个 .sql 文件中有很多与 information_schema 相关的代码,我尝试只删除导出创建它的前几行,但这不起作用,因为插入一堆仍然很麻烦表和什么不是。我不确定如何删除修改它的每一行代码,而无需连续数小时挣扎。

另外,我在公司托管的 phpmyadmin 上——这意味着服务器不是在我自己的计算机上运行的。我无法将任何特殊类型的软件安装到 phpmyadmin 或 mysql。

【问题讨论】:

您能否将转储的一些相关部分添加到问题中?通过这种方式,我们将看到它们是否可以安全地从转储中过滤出来,或者您是否需要提升权限。 information_schema 是只读的,它包含 mysql 实例上所有数据库对象的元数据。当您创建、修改或删除任何数据库对象时,mysql 会自动更新 information_schema。所以,不需要转储它,你不能直接恢复它。 我不知道如何打开 bash 命令行。有人可以引导我通过 phpmyadmin 到达那里吗?我不确定我是否能够访问它,因为我没有托管 mysql 服务器。 【参考方案1】:

看起来转储转储出 information_schema 数据库。你可以这样修复它:

在 bash 命令行上:

sed -i s/information_schema/information_schema_foo/i dump.sql

然后加载更新的转储。您将拥有一个新的数据库 information_schema_foo。你可以放下它。

假设您没有具有子字符串 information_schema 的真实数据,则此方法有效。您可以通过运行验证这一点

grep -i information_schema dump.sql

【讨论】:

在 phpmyadmin 中将其作为 .. 查询运行? 不,两者都是要从终端运行的 Bash 命令。如果您在 Windows 上,请获取 Cygwin,或者您可以使用文本编辑器搜索/替换功能。如果你在 Mac 或 Linux 上,你有一个本地终端。 dump.sql 是您的转储文件的名称。 Mysqldump 不会随机输出对象,它们是组合在一起的。只需使用文本编辑器手动删除 information_schema 相关的创建表和插入,无需运行任何脚本。 我正在使用一家托管公司的 mysql 服务器——我所拥有的只是访问他们的 phpmyadmin——并且该服务器没有在我自己的计算机上运行。萨沙,不管怎样,你的方法仍然有效吗? 另外,影子,当我早些时候尝试时,我很难说出它从哪里开始。

以上是关于MySQL 导入:PhpMyAdmin 不允许我访问“information_schema”的主要内容,如果未能解决你的问题,请参考以下文章

phpMyAdmin 不允许我一次运行多个查询,并且导入我的 SQL 失败

phpmyadmin 不允许导入/导出文件

导入大型数据库 - CPanel & MySQL & PHPMyAdmin

如何通过 phpmyadmin 导入非常大的查询?

使用 phpMyAdmin 将使用长数字的电子表格导入 MySQL 的最佳方法

phpMyAdmin - #1130 - 主机 'SERVER' 不允许连接到这个 MySQL 服务器