Skip to content

MySQL

Install

1
npm install @testcontainers/mysql --save-dev

Examples

These examples use the following libraries:

Choose an image from the container registry and substitute IMAGE.

Execute a query

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
await using container = await new MySqlContainer(IMAGE).start();

const client = await createConnection({
  host: container.getHost(),
  port: container.getPort(),
  database: container.getDatabase(),
  user: container.getUsername(),
  password: container.getUserPassword(),
});

const [rows] = await client.execute("SELECT 1 as res");
expect(rows).toEqual([{ res: 1 }]);

await client.end();

Execute a query inside the container

1
2
3
4
await using container = await new MySqlContainer(IMAGE).start();

const result = await container.executeQuery("SELECT 1 as res");
expect(result).toEqual(expect.stringContaining("res\n1\n"));

With credentials

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
const username = "testUser";
const password = "testPassword";
const database = "testDB";

await using container = await new MySqlContainer(IMAGE)
  .withUsername(username)
  .withUserPassword(password)
  .withDatabase(database)
  .start();

expect(container.getConnectionUri()).toEqual(
  `mysql://${username}:${password}@${container.getHost()}:${container.getPort()}/${database}`
);

await using rootContainer = await new MySqlContainer(IMAGE)
  .withRootPassword(password)
  .withDatabase(database)
  .start();

expect(rootContainer.getConnectionUri(true)).toEqual(
  `mysql://root:${password}@${rootContainer.getHost()}:${rootContainer.getPort()}/${database}`
);