Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to fix "mbind: Operation not permitted" in mysql error log

I have a problem with my MySQL error log which currently mostly consists of "mbind: Operation not permitted" lines (see below). Why does it happen and how do I fix it?

It's the "mostly" part that bothers me. As you can see below, not all lines are "mbind: Operation not permitted". I suspect that MySQL query errors should be instead of that line, but for some reason they can't be written into the file.

MySQL itself is a Docker container where log files are volumed via:

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

What's interesting is that:

  • "docker logs mysql_container" shows nothing...
  • slow.log, which resides in the same volume folder, is completely OK and has real slow log lines in it, no "mbind: Operation not permitted" whatsoever!
  • same as slow.log goes to general.log — no problem here, either

Any ideas? Thank you in advance.

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]

P.S. MySQL starts and runs well, no problem with that. It's just this error.log that keeps bothering me and prevents me from seeing actual errors.

like image 353
gamasexual Avatar asked Apr 07 '19 13:04

gamasexual


2 Answers

Add the capability CAP_SYS_NICE to your container until MySQL server can handle the error itself "silently".

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

If you dont have docker-compose, then you can define CAP_SYS_NICE via

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

References:

  • Docker Seccomp security profiles: https://docs.docker.com/engine/security/seccomp/
  • Docker resource constraints: https://docs.docker.com/config/containers/resource_constraints/
like image 130
Laurent Gosselin Avatar answered Oct 31 '22 22:10

Laurent Gosselin


Adding the security_opt option in docker-compose.yml helped to solve this problem:

database:
  image: mysql:latest
  container_name: mysql_0
  ports:
    - "3306:3306"
  security_opt:
    - seccomp:unconfined
like image 14
gamasexual Avatar answered Oct 31 '22 22:10

gamasexual