Skip to content

Commit

Permalink
Re-organise mysql scripts so the app runs without root access
Browse files Browse the repository at this point in the history
  • Loading branch information
arey committed Mar 13, 2020
1 parent 9fec2ac commit 052f4dd
Show file tree
Hide file tree
Showing 6 changed files with 36 additions and 19 deletions.
5 changes: 4 additions & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@ mysql:
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=petclinic
- MYSQL_ROOT_PASSWORD=
- MYSQL_ALLOW_EMPTY_PASSWORD=true
- MYSQL_USER=petclinic
- MYSQL_PASSWORD=petclinic
- MYSQL_DATABASE=petclinic
volumes:
- "./conf.d:/etc/mysql/conf.d:ro"
4 changes: 3 additions & 1 deletion readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,11 @@ Note that whenever the database type is changed, the data-access.properties file
You could start a MySql database with docker:

```
docker run -e MYSQL_ROOT_PASSWORD=petclinic -e MYSQL_DATABASE=petclinic -p 3306:3306 mysql:5.7
docker run -e MYSQL_USER=petclinic -e MYSQL_PASSWORD=petclinic -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=petclinic -p 3306:3306 mysql:5.7.8
```

Further documentation is provided [here](https://github.com/spring-projects/spring-petclinic/blob/master/src/main/resources/db/mysql/petclinic_db_setup_mysql.txt).


## Looking for something in particular?

Expand Down
6 changes: 3 additions & 3 deletions src/main/resources/application-mysql.properties
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# database init, supports mysql too
database=mysql
spring.datasource.url=jdbc:mysql://localhost/petclinic
spring.datasource.username=root
spring.datasource.username=petclinic
spring.datasource.password=petclinic
# Uncomment this the first time the app runs
# spring.datasource.initialization-mode=always
# SQL is written to be idempotent so this is safe
spring.datasource.initialization-mode=always
23 changes: 19 additions & 4 deletions src/main/resources/db/mysql/petclinic_db_setup_mysql.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,24 @@
--------------------------------------------------------------------------------

1) Download and install the MySQL database (e.g., MySQL Community Server 5.1.x),
which can be found here: http://dev.mysql.com/downloads/. Or run the
which can be found here: https://dev.mysql.com/downloads/. Or run the
"docker-compose.yml" from the root of the project (if you have docker installed
locally).
locally):

2) Create the PetClinic database and user by executing the "db/mysql/{schema,data}.sql"
scripts (or set "spring.datasource.initialize=true" the first time you run the app).
$ docker-compose up
...
mysql_1_eedb4818d817 | MySQL init process done. Ready for start up.
...

2) (Once only) create the PetClinic database and user by executing the "db/mysql/user.sql"
scripts. You can connect to the database running in the docker container using
`mysql -u root -h localhost --protocol tcp`, but you don't need to run the script there
because the petclinic user is already set up if you use the provided `docker-compose.yaml`.

3) Run the app with `spring.profiles.active=mysql` (e.g. as a System property via the command
line, but any way that sets that property in a Spring Boot app should work).

N.B. the "petclinic" database has to exist for the app to work with the JDBC URL value
as it is configured by default. This condition is taken care of automatically by the
docker-compose configuration provided, or by the `user.sql` script if you run that as
root.
10 changes: 0 additions & 10 deletions src/main/resources/db/mysql/schema.sql
Original file line number Diff line number Diff line change
@@ -1,13 +1,3 @@
CREATE DATABASE IF NOT EXISTS petclinic;

ALTER DATABASE petclinic
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;

GRANT ALL PRIVILEGES ON petclinic.* TO pc@localhost IDENTIFIED BY 'pc';

USE petclinic;

CREATE TABLE IF NOT EXISTS vets (
id INT(4) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(30),
Expand Down
7 changes: 7 additions & 0 deletions src/main/resources/db/mysql/user.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
CREATE DATABASE IF NOT EXISTS petclinic;

ALTER DATABASE petclinic
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;

GRANT ALL PRIVILEGES ON petclinic.* TO 'petclinic@%' IDENTIFIED BY 'petclinic';

0 comments on commit 052f4dd

Please sign in to comment.