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
https://mariadb.com/kb/en/installing-system-tables-mysql_install_db
You can find the latest source at https://downloads.mariadb.org and
the maria-discuss email list at https://launchpad.net/~maria-discuss
Please check all of the above before submitting a bug report
at http://mariadb.org/jira
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)?
#
# 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
[server]
# this is only for the mysqld standalone daemon
[mysqld]
#
# * Basic Settings
#
user = mariadb
pid-file = /var/run/mysqld/mysqld.pid
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
skip-external-locking
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
#
# * 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
#
#log-queries-not-using-indexes
#
# 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 https://mariadb.com/kb/en/unix_socket-authentication-plugin/