docker pull mysql
sudo docker run -d --name mysql -v /dockerdata/mysql:/var/lib/mysql --network mysql -e MYSQL_ROOT_PASSWORD=39af450e26e9 mysql
Then I logged in and changed the root password (used a custom password instead of MYPASSWORD):
sudo docker exec -it mysql /bin/bash
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MYPASSWORD';
Note that after the first run, the data is persisting. So the password will stay as what I set, even if MYSQLROOTPASSWORD is specified in another run command on that folder. The data is persisting in /dockerdata/mysql, running a new container will not overwrite that data.
Create a couple users:
mysql> CREATE USER 'wikijs'@'%' IDENTIFIED BY 'MYPASSWORD';
Query OK, 0 rows affected (0.02 sec)
mysql> CREATE USER 'bookstack'@'%' IDENTIFIED BY 'MYPASSWORD';
Query OK, 0 rows affected (0.01 sec)
Create a couple databases:
mysql> CREATE DATABASE wikijs;
Query OK, 1 row affected (0.01 sec)
mysql> CREATE DATABASE bookstack;
Query OK, 1 row affected (0.01 sec)
Grant permissions to each user:
mysql> GRANT ALL PRIVILEGES ON wikijs.* TO 'wikijs'@'%';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON bookstack.* TO 'bookstack'@'%';
Query OK, 0 rows affected, 1 warning (0.00 sec)
Don't forget to FLUSH PRIVILEGES;
!
Then I was able to run another docker container:
sudo docker run -d -p 25570:3000 --name wikijs --restart unless-stopped --network mysql -e "DB_TYPE=mysql" -e "DB_HOST=mysql" -e "DB_PORT=3306" -e "DB_USER=wikijs" -e "DB_PASS=MYPASSWORD" -e "DB_NAME=wikijs" requarks/wiki:2