Wiki Spaces
Documentation
Projects
Resources
Get Help from Others
Q&A: Ask OpenMRS
Discussion: OpenMRS Talk
Real-Time: IRC Chat | Slack
It is recommended that your version of MySQL is compatible with the version of the OpenMRS Platform you are installing.
This requires installing an older version than the latest MySQL release.
Note: MySQL might fail to run as a service, for this you can manually start it by navigating to Start > Settings > Control Panel > Administrative Tools > Services
Then find the service called “MySQL”, right click > Properties then you can either click the “start” button or set “Startup Type” to automatic.
To install an older version such as MySQL 5.6 or 5.7 (recommended), follow the instructions laid out here.
To install the latest package, perform the following.
Install the MySQL server package as root:
sudo apt-get install mysql-server
Note that with many Linux distributions, the default install of MySQL might not be accessible to OpenMRS. To ensure your instance of MySQL will work with OpenMRS, you can use the following command:
mysql -h localhost -P 3306 --protocol tcp -u root -p
This will prompt you for the root password you selected above. if you cannot connect like this, you'll need to ensure that the root
MySQL user is able to login via TCP. To do this run:
sudo mysql -u root mysql> use mysql; mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password'; mysql> FLUSH PRIVILEGES; mysql> exit
Docker allows easy installation of MySQL in a self-contained container on linux but is a bit more complicated option on Windows or OSX. See https://docs.docker.com/engine/installation/ on how to start using Docker.
After you have installed Docker, it's easy to launch a MySQL container. This will download a MySQL 5.7 Docker image and run it:
$ docker run --name openmrs-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=openmrs -d mysql:5.7
Now you can connect to the database on port 3306 with username "root" and password "openmrs". Note that the port mapping argument -p 3306:3306
is needed to expose MySQL service's port inside the container to the host.
You may also ask Docker to list all Docker containers:
$ docker ps --all CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 233f1d85e7c9 mysql:5.7 "/entrypoint.sh mysql" 20 seconds ago Up 19 seconds 0.0.0.0:3306->3306/tcp openmrs-mysql
Need to test on another MySQL version? You may run multiple MySQL container's simultaneously just as long as you give them unique names and port mappings. For example to run a MySQL 5.7 container, you might say:
$ sudo docker run --name openmrs-mysql -p 3316:3306 -e MYSQL_ROOT_PASSWORD=openmrs -d mysql:5.7
Stopping and starting your database container is easy:
# stopping... $ docker stop openmrs-mysql # ...and starting again $ docker start openmrs-mysql
If you decide you don't need the database any more you can remove it:
$ docker rm openmrs-mysql