(Ref: https://github.com/sylabs/examples/tree/master/database/mariadb)
Create the mariadb.def file
Bootstrap: dockerFrom: mariadb:10.3.9
%post# replace `your-name` with your username, run `whoami` to see your usernameYOUR_USERNAME="your-name"
sed -ie "s/^#user.*/user = ${YOUR_USERNAME}/" /etc/mysql/my.cnfchmod 1777 /run/mysqld
%runscriptexec "mysqld" "$@"
%startscriptexec "mysqld_safe"
sudo /usr/local/bin/singularity build mariadb.sif mariadb.defmkdir dbsingularity shell --writable-tmpfs -B db/:/var/lib/mysql mariadb.sif
Inside the container
> mysql_install_db> mysqld_safe --datadir=/var/lib/mysql &ENTER again> mysql_secure_installation
Enter your old password. There is none just press <ENTER> . Set a new password. [Y/n] y Type your new password (remember that password). Remove anonymous users. [Y/n] y Disallow root login remotely. [Y/n] y Remove the test database and access. [Y/n] y Reload/flush the privilege table. [Y/n] y
> mysql -u root -pMariaDB [(none)]> use mysql;MariaDB [mysql]> CREATE DATABASE workdb;MariaDB [mysql]> CREATE USER newuser@<YOUR_IP_ADDRESS> IDENTIFIED BY "<YOUR_PASSWORD>";MariaDB [mysql]> GRANT ALL PRIVILEGES ON workdb.* TO newuser@<YOUR_IP_ADDRESS> WITH GRANT OPTION;MariaDB [mysql]> FLUSH PRIVILEGES;MariaDB [mysql]> exit
> mysqladmin -u root -p shutdown> exit
singularity instance start --writable-tmpfs -B db/:/var/lib/mysql mariadb.sif mariadbsudo yum install mysqlsingularity instance start --writable-tmpfs -B db/:/var/lib/mysql mariadb.sif mariadbmysql -u newuser -p -h <IPADDRESS> workdb
MariaDB [workdb]> CREATE TABLE test ( id INT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE, name varchar(64), PRIMARY KEY (id));MariaDB [workdb]> INSERT INTO test (name) VALUES ('name1'),('name2');MariaDB [workdb]> exit
mysql -u newuser -p -h <IPADDRESS> workdb -e "SELECT * FROM test WHERE name = 'name2';"singularity instance stop mariadb