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 失败
导入大型数据库 - CPanel & MySQL & PHPMyAdmin