Installing Database in OpenWrt 18.06


I am trying to install database in OpenWRT 18.06. When I give the command /etc/init.d/mysqld start
I am facing the below error

mysqld: Cannot detect privileges table. You might need to run
mysqld: 'mysql_install_db --force --basedir=/usr'
mysqld: to initialize the system tables.

and when I try to run mysql_install_db --force --basedir=/usr, this is the error I am facing

Installing MariaDB/MySQL system tables in '/mnt/data/mysql' ...
2020-03-02 11:31:04 2013105420 [ERROR] InnoDB: Linux Native AIO interface is not supported on this platform. Please check your OS documentation and install appropriate binary of InnoDB.
2020-03-02 11:31:04 2013105420 [Warning] InnoDB: Linux Native AIO disabled.
2020-03-02 11:31:04 2013105420 [ERROR] InnoDB: mmap(136183808 bytes) failed; errno 12
2020-03-02 11:31:04 2013105420 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2020-03-02 11:31:04 2013105420 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2020-03-02 11:31:04 2013105420 [ERROR] Plugin 'InnoDB' init function returned error.
2020-03-02 11:31:04 2013105420 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2020-03-02 11:31:04 2013105420 [ERROR] mysqld: Out of memory (Needed 130760704 bytes)
2020-03-02 11:31:04 2013105420 [ERROR] mysqld: Out of memory (Needed 98058240 bytes)
2020-03-02 11:31:04 2013105420 [ERROR] mysqld: Out of memory (Needed 73531392 bytes)
2020-03-02 11:31:05 2013105420 [ERROR] Unknown/unsupported storage engine: InnoDB
2020-03-02 11:31:05 2013105420 [ERROR] Aborting

Installation of system tables failed!  Examine the logs in
/mnt/data/mysql for more information.

The problem could be conflicting information in an external
my.cnf files. You can ignore these by doing:

    shell> /usr/bin/mysql_install_db --defaults-file=~/.my.cnf

You can also try to start the mysqld daemon with:

    shell> /usr/bin/mysqld --skip-grant-tables --general-log &

and use the command line tool /usr/bin/mysql
to connect to the mysql database and look at the grant tables:

    shell> /usr/bin/mysql -u root mysql
    mysql> show tables;

Try 'mysqld --help' if you have problems with paths.  Using
--general-log gives you a log in /mnt/data/mysql that may be helpful.

The latest information about mysql_install_db is available at
You can find the latest source at and
the maria-discuss email list at

Please check all of the above before submitting a bug report

Any pointers on how to solve would be helpful.


Your device does not seem to have enough RAM. What device are you using? What is the contents of "/etc/mysql/conf.d/50-server.cnf" (or "/etc/mysql/conf.d/my.cnf" in older releases)?

The status of memory while trying to install is

             total       used       free     shared    buffers     cached
Mem:        124684      87772      36912       1564      34068      26864
-/+ buffers/cache:      26840      97844
Swap:            0          0          0

Contents of /etc/mysql/conf.d/50-server.cnf is

# These groups are read by MariaDB server.
# Use it for options that only the server (but not clients) should see
# See the examples of server my.cnf files in /usr/share/mysql/

# this is read by the standalone daemon and embedded servers

# this is only for the mysqld standalone daemon

# * Basic Settings
user		= mariadb
pid-file	= /var/run/mysqld/
socket		= /var/run/mysqld/mysqld.sock
port		= 3306
basedir		= /usr
# Don't put this on flash memory
# Figure out where you are going to put the databases and run
# mysql_install_db --force
datadir		= /mnt/data/mysql
# tmpdir should also not go on flash memory
tmpdir		= /tmp
lc-messages-dir	= /usr/share/mariadb


# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address	=

# * Fine Tuning
key_buffer_size		= 16M
max_allowed_packet	= 16M
thread_stack		= 192K
thread_cache_size	= 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam_recover_options	= BACKUP
#max_connections	= 100
#table_cache		= 64
#thread_concurrency	= 10

# * Query Cache Configuration
query_cache_limit	= 1M
query_cache_size	= 16M

# * Logging and Replication
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
#general_log_file	= /var/log/mysql/mysql.log
#general_log		= 1
# Error log - should be very few entries.
# Note that if unset the errors will go to stdout and can be seen in syslog
# (check "logread")
#log_error = /var/log/mysql/error.log
# Enable the slow query log to see queries with especially long duration
#slow_query_log_file	= /var/log/mysql/mariadb-slow.log
#long_query_time	= 10
#log_slow_rate_limit	= 1000
#log_slow_verbosity	= query_plan
# The following can be used as easy to replay backup logs or for replication.
#server-id		= 1
#log_bin		= /var/log/mysql/mysql-bin.log
expire_logs_days	= 10
max_binlog_size		= 100M
#binlog_do_db		= include_database_name
#binlog_ignore_db	= exclude_database_name

# * InnoDB
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!

# * Security Features
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
# For generating SSL certificates you can use for example the GUI tool "tinyca".
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem
# Accept only connections using the latest and most secure TLS protocol version.
# ..when MariaDB is compiled with OpenSSL:
# ssl-cipher=TLSv1.2

# * Character sets
# MySQL/MariaDB default is Latin1, but in OpenWrt we rather default to the full
# utf8 4-byte character set. See also client.cnf
# Note: In OpenWrt until mariadb 10.2.19-2 the baked-in defaults were
# "DEFAULT_CHARSET=utf8" and "DEFAULT_COLLATION=utf8_general_ci". As MariaDB's
# utf8 (supports three bytes per character) is not really UTF-8 (which needs up
# to four bytes per character) this was changed. Now the baked in-defaults are
# the upstream defaults (Latin1), but in the default configuration (like in the
# file you are currently reading) utf8mb4 is set, which is real UTF-8.
# Of course you are free to change this, either here or in a configuration file
# of your own which is read after this .cnf file, see my.cnf in parent folder
# (files are read in alphabetical order).
character-set-server  = utf8mb4
collation-server      = utf8mb4_general_ci

# * Unix socket authentication plugin is built-in
# Needed so the root database user can authenticate without a password but
# only when running as the unix root user.
# Also available for other users if required.
# See

simple, create swap ti avoid the error


Hello, did you solve the problem? I also encountered the same problem

Please provide English translations, thanks.


  • Does your device have enough memory?
  • If not, did you create swap space?