Zach's Mugspideyclick logo

GitHub

GitLab

Linkedin

Instagram

Youtube

SoundCloud

Email

MySQL Tips

Installing MySQL from a docker container

Mysql Docker Installation

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