【问题标题】:Google cloud sql instance super privilege error谷歌云sql实例超级权限错误
【发布时间】:2015-05-02 13:37:40
【问题描述】:

我是谷歌应用引擎的新手,请帮我解决我的问题

当我导入 SQL 文件时,我在谷歌云 sql 中创建了一个实例,然后它显示这样的错误。

第 1088 行的错误 1227 (42000):访问被拒绝;您需要(至少一个)超级权限才能执行此操作

如何为我的实例添加超级权限。

【问题讨论】:

  • 你搜索过错误吗?

标签: google-app-engine google-cloud-sql


【解决方案1】:

the Cloud SQL documentation所述:

不支持超级权限。

您可以查看 this page,其中介绍了如何将数据导入 Cloud SQL 实例。

【讨论】:

  • @我也遇到同样的错误,我从第一代云 sql 导出哑元并从第二代云 sql 导入在第 22 行出现错误 ERROR 1227 (42000):访问被拒绝;您需要(至少其中一项)超级权限才能执行此操作
  • 您找到解决方案了吗?
  • 我他妈的成功了。您必须从客户端创建表或创建数据库,并遇到该错误。而且我认为您正在访问 mysql 数据库。通过我 4 小时的研究,你不可能做到这一点,而且你做错了,因为访问“mysql”数据库确实是禁止的。您应该拥有自己的数据库,而不是“mysql”数据库。从控制台,创建你的数据库,然后创建表,然后你就可以通过了。希望此评论对某人有所帮助,如果您愿意,请发表评论。欢迎您!
【解决方案2】:

我也遇到了同样的问题。但问题出在转储的 sql 数据库中。导出数据库时使用这些标志

--hex-blob --skip-triggers --set-gtid-purged=OFF

这里是如何做到这一点的完整文档 (https://cloud.google.com/sql/docs/mysql/import-export/importing)。数据导出后,可以使用命令行、gcloud shell 或gcloud sql 中的import 选项导入。

我使用了gcloud sql 控制台的import 功能,它对我有用。

【讨论】:

  • 如果您使用的是更新版本的mysqldump,可能还需要添加:--column-statistics=0
  • @MattBrowne 你知道mysqldump是哪个版本的吗?
  • 看起来像 mysqldump 版本 8+。顺便说一句,我在这里添加了一个答案,显示了我使用的特定命令:stackoverflow.com/a/63239396/560114
【解决方案3】:

在将 gzipped 转储(使用 mysqldump 从 5.1 版本的 MySQL 采购)反向移植到 MySQL 5.6 的 Google Cloud SQL 实例时,我遇到了同样的错误。 sql文件中的以下语句是问题:

DEFINER=`username`@`%`

对我有用的解决方案是使用 sed 删除它的所有实例:

cat db-2018-08-30.sql |  sed -e 's/DEFINER=`username`@`%`//g' > db-2018-08-30-CLEANED.sql

删除后,反向移植完成,没有错误。显然需要SUPER 权限,这在 Google Cloud SQL 中不可用,才能运行DEFINER

另一个参考:Access denied; you need (at least one of) the SUPER privilege(s) for this operation

祝你好运!

【讨论】:

  • 谢谢!解决了问题!
【解决方案4】:

我遇到了同样的问题,您可以尝试向用户授予“超级权限”,但在 GCP 云 SQL 中不可用。

声明

DEFINER=username@`%

是您的备份转储中的一个问题。

您可以解决的解决方案是从 sql 转储文件中删除所有条目并从 GCP 控制台导入数据。

cat DUMP_FILE_NAME.sql | sed -e 's/DEFINER=<username>@%//g' > NEW-CLEANED-DUMP.sql

从转储中删除条目并成功完成后,您可以尝试重新导入。

【讨论】:

    【解决方案5】:

    对于在数据库之间复制的用例在同一实例中,似乎唯一的方法是使用mysqldump,您必须传递一些特殊标志才能使其在没有超级特权。这就是我从一个数据库复制到另一个数据库的方式:

    DB_HOST=...  # set to 127.0.0.1 if using cloud-sql proxy
    DB_USER=...
    DB_PASSWORD=...
    SOURCE_DB=...
    DESTINATION_DB=...
    
    mysqldump --hex-blob --skip-triggers --set-gtid-purged=OFF --column-statistics=0 -h $DB_HOST -u $DB_USER -p"$DB_PASSWORD" $SOURCE_DB \
      | mysql -h $DB_HOST -u $DB_USER -p"$DB_PASSWORD" $DESTINATION_DB
    

    或者,如果您只是想转储到本地文件并稍后使用它执行其他操作:

    mysqldump --hex-blob --skip-triggers --set-gtid-purged=OFF --column-statistics=0 -h $DB_HOST -u $DB_USER -p"$DB_PASSWORD" $SOURCE_DB \
      > $SOURCE_DB.sql
    

    请参阅https://cloud.google.com/sql/docs/mysql/import-export/exporting#export-mysqldump 了解更多信息。

    【讨论】:

      【解决方案6】:

      这是关于数据的导出。当您从控制台导出时,它会导出整个实例,而不仅仅是模式,这需要创建它的项目的 SUPER 权限。要将数据导出到另一个项目,只需通过在高级选项中定位模式来导出。如果遇到could not find storage or object,请将导出的架构保存到本地,然后上传到其他项目的存储中,然后从那里选择它。

      【讨论】:

        【解决方案7】:

        如果有人在 2018 年(至少 8 月)搜索此内容,解决方案是:

        1. 创建一个数据库。您可以从 UI 中执行此操作,只需转到数据库菜单并单击“创建数据库”。
        2. 单击“导入”并选择您的 sql_dump(之前保存在存储桶中)后,“显示高级选项”并选择您的 Db(不是那么高级,是吗?!)。否则默认是系统mysql里面的,当然不能 支持导入。

        导入愉快。

        【讨论】:

        • 这也是我的情况。归结起来,你需要导入到你有权限的数据库中。
        【解决方案8】:

        我通过创建一个新数据库并在 SQL 实例中解决了这个问题。 (默认数据库是 sys 用于 mysql)。

        步骤(非cli版本):
        1) 在 GCP > SQL > Databases 中,创建一个新数据库,例如 newdb
        2)在你的sql脚本中,添加:Use newdb;

        希望对某人有所帮助

        【讨论】:

          【解决方案9】:
          SUPER privilege is exclusively reserved for GCP
          

          对于您的问题,您需要将数据导入您拥有权限的数据库中..

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-01-07
            • 1970-01-01
            • 1970-01-01
            • 2017-01-30
            • 1970-01-01
            相关资源
            最近更新 更多