Search code examples
androidmysqlnetwork-programmingdebianpymysql

MySQL doesn't start: [ERROR] Failed to create a socket for IPv4 '127.0.0.1': errno: 13


I'm about to set up a low traffic web server onto an old Android phone in a chrooted environment. A Debian is installed onto the phone and works properly for some months (so this is a kind of special Linux environment).

Apache2 and Python are up and running.

But when I start mysqld:

root@Motoluxe:~# /usr/sbin/mysqld
... [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
... [Note] /usr/sbin/mysqld (mysqld 5.5.49-0+deb7u1) starting as process 31419 ...
... [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
... [Note] Plugin 'FEDERATED' is disabled.
... InnoDB: The InnoDB memory heap is disabled
... InnoDB: Mutexes and rw_locks use GCC atomic builtins
... InnoDB: Compressed tables use zlib 1.2.7
... InnoDB: Using Linux native AIO
... InnoDB: Initializing buffer pool, size = 128.0M
... InnoDB: Completed initialization of buffer pool
... InnoDB: highest supported file format is Barracuda.
... InnoDB: Waiting for the background threads to start
... InnoDB: 5.5.49 started; log sequence number 1598476
... [Note] Server hostname (bind-address): '127.0.0.1'; port: 3306
... [Note]   - '127.0.0.1' resolves to '127.0.0.1';
... [ERROR] Failed to create a socket for IPv4 '127.0.0.1': errno: 13.
... [ERROR] Can't create IP socket: Permission denied
... [ERROR] Aborting
...  InnoDB: Starting shutdown...
...  InnoDB: Shutdown completed; log sequence number 1598476
... [Note] /usr/sbin/mysqld: Shutdown complete

In /etc/mysql/my.conf:

#skip-networking
...
socket          = /var/run/mysqld/mysqld.sock

In /var/run:

drwxrwxrwx 2 mysql mysql 4096 jún 19 10:07 mysqld

So in theory the socket can be written.

(If I enable skip-networking mysql starts but i cannot connect to it from python via pymysql.connect)

It is noteworthy that /etc/groups seems to be incomplete and I saw groups without a name having just an ID (in directory listings), so some kind of mysql-is-not-being-in-that-group-that-owes-a-network-resource-type problem is conceivable.

Other network using programs, include apache2 work.

PS Enabling python to connect with skip-networking enabled should be a workaround.


Solution

  • This is probably because your Android kernel has been compiled with CONFIG_ANDROID_PARANOID_NETWORK. You can fix it by adding the mysql user to the aid_inet and aid_net_raw groups.

    before:

    [mysql@81fc75b0d254466b ~]$ mysqld
    2017-04-16  8:25:07 4143896512 [Note] mysqld (mysqld 10.1.22-MariaDB) starting as process 6995 ...
    2017-04-16  8:25:08 4143896512 [Note] InnoDB: Using mutexes to ref count buffer pool pages
    2017-04-16  8:25:08 4143896512 [Note] InnoDB: The InnoDB memory heap is disabled
    2017-04-16  8:25:08 4143896512 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
    2017-04-16  8:25:08 4143896512 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
    2017-04-16  8:25:08 4143896512 [Note] InnoDB: Compressed tables use zlib 1.2.11
    2017-04-16  8:25:08 4143896512 [Note] InnoDB: Using Linux native AIO
    2017-04-16  8:25:08 4143896512 [Note] InnoDB: Using generic crc32 instructions
    2017-04-16  8:25:08 4143896512 [Note] InnoDB: Initializing buffer pool, size = 128.0M
    2017-04-16  8:25:08 4143896512 [Note] InnoDB: Completed initialization of buffer pool
    2017-04-16  8:25:08 4143896512 [Note] InnoDB: Highest supported file format is Barracuda.
    2017-04-16  8:25:08 4143896512 [Note] InnoDB: 128 rollback segment(s) are active.
    2017-04-16  8:25:08 4143896512 [Note] InnoDB: Waiting for purge to start
    2017-04-16  8:25:08 4143896512 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.35-80.0 started; log sequence number 1616819
    2017-04-16  8:25:08 4143896512 [Note] Plugin 'FEEDBACK' is disabled.
    2017-04-16  8:25:08 3630140224 [Note] InnoDB: Dumping buffer pool(s) not yet started
    2017-04-16  8:25:08 4143896512 [Warning] Failed to create a socket for IPv6 '::': errno: 13.
    2017-04-16  8:25:08 4143896512 [Warning] Failed to create a socket for IPv4 '0.0.0.0': errno: 13.
    2017-04-16  8:25:08 4143896512 [ERROR] Can't create IP socket: Permission denied
    2017-04-16  8:25:08 4143896512 [ERROR] Aborting
    

    after:

    [root@81fc75b0d254466b mysqld]# usermod -a -G aid_inet,aid_net_raw mysql
    [root@81fc75b0d254466b mysqld]# su mysql
    [mysql@81fc75b0d254466b mysqld]$ mysqld
    2017-04-16  9:56:00 4144179136 [Note] mysqld (mysqld 10.1.22-MariaDB) starting as process 7246 ...
    2017-04-16  9:56:00 4144179136 [Note] InnoDB: Using mutexes to ref count buffer pool pages
    2017-04-16  9:56:00 4144179136 [Note] InnoDB: The InnoDB memory heap is disabled
    2017-04-16  9:56:00 4144179136 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
    2017-04-16  9:56:00 4144179136 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
    2017-04-16  9:56:00 4144179136 [Note] InnoDB: Compressed tables use zlib 1.2.11
    2017-04-16  9:56:00 4144179136 [Note] InnoDB: Using Linux native AIO
    2017-04-16  9:56:00 4144179136 [Note] InnoDB: Using generic crc32 instructions
    2017-04-16  9:56:00 4144179136 [Note] InnoDB: Initializing buffer pool, size = 128.0M
    2017-04-16  9:56:00 4144179136 [Note] InnoDB: Completed initialization of buffer pool
    2017-04-16  9:56:00 4144179136 [Note] InnoDB: Highest supported file format is Barracuda.
    2017-04-16  9:56:00 4144179136 [Note] InnoDB: 128 rollback segment(s) are active.
    2017-04-16  9:56:00 4144179136 [Note] InnoDB: Waiting for purge to start
    2017-04-16  9:56:00 4144179136 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.35-80.0 started; log sequence number 1616869
    2017-04-16  9:56:00 4144179136 [Note] Plugin 'FEEDBACK' is disabled.
    2017-04-16  9:56:00 3632237376 [Note] InnoDB: Dumping buffer pool(s) not yet started
    2017-04-16  9:56:00 4144179136 [Note] Server socket created on IP: '::'.
    2017-04-16  9:56:00 4144179136 [Note] mysqld: ready for connections.
    Version: '10.1.22-MariaDB'  socket: '/run/mysqld/mysqld.sock'  port: 3306  MariaDB Server
    

    Also see https://stackoverflow.com/a/36451445/4158804

    Tested on Linux 81fc75b0d254466b 4.4.40-android-x86_64 #2 SMP PREEMPT Fri Jan 13 22:40:54 CST 2017 x86_64 GNU/Linux in an Archlinux chroot with mysql Ver 15.1 Distrib 10.1.22-MariaDB, for Linux (i686).