1. ホーム
  2. docker

[解決済み] mysqlのエラーログに「mbind: Operation not permitted」と表示されるのを修正する方法

2022-02-26 02:17:16

質問

MySQL のエラーログに問題があり、現在ほとんどが "mbind: Operation not permitted" の行で構成されています(下記参照)。なぜこのようなことが起こるのでしょうか、また、どのように修正すればよいのでしょうか?

気になるのは、"mostly" の部分です。下記のように、すべての行が "mbind: Operation not permitted" になっているわけではありません。MySQLのクエリーエラーがこの行の代わりにあるはずなのですが、何らかの理由でファイルに書き込むことができないのでしょう。

MySQL自体はDockerコンテナでログファイルはvolumed viaです。

volumes:
- ./mysql/log:/var/log/mysql

面白いのは、その点です。

  • "docker logs mysql_container" には何も表示されません...。
  • 同じボリュームフォルダにある slow.log は全く問題なく、本物のスローログ行があり、 "mbind: Operation not permitted" は全くありません!
  • slow.logと同じものがgeneral.logへ - こちらも問題なし

何か思い当たることはありますか?よろしくお願いします。

2019-04-07T12:56:22.478504Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
2019-04-07T12:56:22.478533Z 0 [Warning] [MY-011068] [Server] The syntax 'expire-logs-days' is deprecated and will be removed in a future release. Please use binlog_expire_logs_seconds instead.
2019-04-07T12:56:22.478605Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.15) starting as process 1
2019-04-07T12:56:22.480115Z 0 [Warning] [MY-013242] [Server] --character-set-server: 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.
2019-04-07T12:56:22.480122Z 0 [Warning] [MY-013244] [Server] --collation-server: 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
mbind: Operation not permitted
mbind: Operation not permitted
mbind: Operation not permitted
mbind: Operation not permitted
mbind: Operation not permitted
mbind: Operation not permitted
mbind: Operation not permitted
mbind: Operation not permitted
mbind: Operation not permitted
mbind: Operation not permitted
mbind: Operation not permitted
mbind: Operation not permitted
mbind: Operation not permitted
mbind: Operation not permitted
mbind: Operation not permitted
mbind: Operation not permitted
mbind: Operation not permitted
mbind: Operation not permitted
[same line goes forever]

追伸:MySQLは問題なく起動し、動作しています。ただ、このerror.logが私を悩ませ続け、実際のエラーを見ることを妨げているのです。

どのように解決するのですか?

機能を追加する CAP_SYS_NICE は、MySQL サーバがエラーを「静かに」処理できるようになるまで、コンテナに追加する必要があります。

service:
  mysql:
    image: mysql:8.0.15
    # ...
    cap_add:
      - SYS_NICE  # CAP_SYS_NICE

をお持ちでない場合 docker-compose を定義することができます。 CAP_SYS_NICE を経て

docker run --cap-add=sys_nice -d mysql

参考文献