@@ -12,9 +12,10 @@ public class MariaDBContainer<SELF extends MariaDBContainer<SELF>> extends JdbcD
1212 public static final String DEFAULT_TAG = "10.3.6" ;
1313
1414 private static final Integer MARIADB_PORT = 3306 ;
15- private static final String MARIADB_USER = "test" ;
16- private static final String MARIADB_PASSWORD = "test" ;
17- private static final String MARIADB_DATABASE = "test" ;
15+ private String databaseName = "test" ;
16+ private String username = "test" ;
17+ private String password = "test" ;
18+ private static final String MARIADB_ROOT_USER = "root" ;
1819 private static final String MY_CNF_CONFIG_OVERRIDE_PARAM_NAME = "TC_MY_CNF" ;
1920
2021 public MariaDBContainer () {
@@ -35,10 +36,16 @@ protected void configure() {
3536 optionallyMapResourceParameterAsVolume (MY_CNF_CONFIG_OVERRIDE_PARAM_NAME , "/etc/mysql/conf.d" , "mariadb-default-conf" );
3637
3738 addExposedPort (MARIADB_PORT );
38- addEnv ("MYSQL_DATABASE" , MARIADB_DATABASE );
39- addEnv ("MYSQL_USER" , MARIADB_USER );
40- addEnv ("MYSQL_PASSWORD" , MARIADB_PASSWORD );
41- addEnv ("MYSQL_ROOT_PASSWORD" , MARIADB_PASSWORD );
39+ addEnv ("MYSQL_DATABASE" , databaseName );
40+ addEnv ("MYSQL_USER" , username );
41+ if (password != null && !password .isEmpty ()) {
42+ addEnv ("MYSQL_PASSWORD" , password );
43+ addEnv ("MYSQL_ROOT_PASSWORD" , password );
44+ } else if (MARIADB_ROOT_USER .equalsIgnoreCase (username )) {
45+ addEnv ("MYSQL_ALLOW_EMPTY_PASSWORD" , "yes" );
46+ } else {
47+ throw new ContainerLaunchException ("Empty password can be used only with the root user" );
48+ }
4249 setStartupAttempts (3 );
4350 }
4451
@@ -49,22 +56,22 @@ public String getDriverClassName() {
4956
5057 @ Override
5158 public String getJdbcUrl () {
52- return "jdbc:mariadb://" + getContainerIpAddress () + ":" + getMappedPort (MARIADB_PORT ) + "/test" ;
59+ return "jdbc:mariadb://" + getContainerIpAddress () + ":" + getMappedPort (MARIADB_PORT ) + "/" + databaseName ;
5360 }
5461
5562 @ Override
5663 public String getDatabaseName () {
57- return MARIADB_DATABASE ;
64+ return databaseName ;
5865 }
5966
6067 @ Override
6168 public String getUsername () {
62- return MARIADB_USER ;
69+ return username ;
6370 }
6471
6572 @ Override
6673 public String getPassword () {
67- return MARIADB_PASSWORD ;
74+ return password ;
6875 }
6976
7077 @ Override
@@ -76,4 +83,22 @@ public SELF withConfigurationOverride(String s) {
7683 parameters .put (MY_CNF_CONFIG_OVERRIDE_PARAM_NAME , s );
7784 return self ();
7885 }
86+
87+ @ Override
88+ public SELF withDatabaseName (final String databaseName ) {
89+ this .databaseName = databaseName ;
90+ return self ();
91+ }
92+
93+ @ Override
94+ public SELF withUsername (final String username ) {
95+ this .username = username ;
96+ return self ();
97+ }
98+
99+ @ Override
100+ public SELF withPassword (final String password ) {
101+ this .password = password ;
102+ return self ();
103+ }
79104}
0 commit comments