mysqlのセキュリティ更新で新たなユーザー権限が必要になっていた


久々にmysqldumpを使用した際の話

とある検証のために本番環境の最新のデータを検証環境のデータベースにいれる必要があり、久々にmysqldumpを実行。

まずはテーブル名を指定してdumpファイルを作成する。

mysqldump -uユーザー名 -pパスワード -hホスト スキーマ名 テーブル名 > /tmp/dump.sql 

実行。

 Access denied; you need (at least one of) the PROCESS privilege(s) for this operation 

アクセス拒否、PROCESS権限が必要です。

以前なら問題なく実行できていたユーザーなのに、必要な権限が増えている?

ということで調べてみると、リリースノートのセキュリティ注釈に記載があり

https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-31.html
Security Notes Incompatible Change: Access to the INFORMATION_SCHEMA.FILES table now requires the PROCESS privilege. This change affects users of the mysqldump command, which accesses tablespace information in the FILES table, and thus now requires the PROCESS privilege as well. Users who do not need to dump tablespace information can work around this requirement by invoking mysqldump with the --no-tablespaces option. (Bug #30350829) The linked OpenSSL library for MySQL Server has been updated to version 1.1.1g. Issues fixed in the new OpenSSL version are described at https://www.openssl.org/news/cl111.txt and https://www.openssl.org/news/vulnerabilities.html. (Bug #31296697)

PROCESS権限が必要になっていました。

ユーザーに権原を付与する、または

--no-tablespaces

オプションをつけることで回避できるそうです。

今回はオプションで対応しました。

改めて実行。

mysqldump -uユーザー名 -pパスワード -hホスト --no-tablespaces スキーマ名 テーブル名 > /tmp/dump.sql

今度は問題なくダンプ終了

mysql -uユーザー名 -pパスワード -hホスト スキーマ名 < /tmp/dump.sql

ロードする。

Access denied; you need (at least one of) the SUPER privilege(s) for this operation

さらにアクセス拒否が表示される。SUPER権限が必要です?

これについては

SET @@GLOBAL.GTID_PURGED

が原因でした

https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#option_mysqldump_set-gtid-purged
This option enables control over global transaction ID (GTID) information written to the dump file, by indicating whether to add a SET @@GLOBAL.gtid_purged statement to the output. This option may also cause a statement to be written to the output that disables binary logging while the dump file is being reloaded.

グローバルトランザクションIDについては変更したくないので、これもオプションで対応。

--set-gtid-purged=OFF

を追記して、再度ダンプし直します。

 mysqldump -uユーザー名 -pパスワード -hホスト --no-tablespaces --set-gtid-purged=OFF スキーマ名 テーブル名 > /tmp/dump.sql 

そしてロードする。

mysql -uユーザー名 -pパスワード -hホスト スキーマ名 < /tmp/dump.sql

問題なくできました。これで最新のデータで検証を行うことができそうです。

現在未評価

コメント

コメントを投稿
コメントするには TORICO-ID にログインしてください。
ログイン コメント利用規約