TestContainers 和 Mysql:用户“@'172.17.0.1”的访问被拒绝(使用密码:否)
Posted
技术标签:
【中文标题】TestContainers 和 Mysql:用户“@\'172.17.0.1”的访问被拒绝(使用密码:否)【英文标题】:TestContainers and Mysql : Access denied for user ''@'172.17.0.1' (using password: NO)TestContainers 和 Mysql:用户“@'172.17.0.1”的访问被拒绝(使用密码:否) 【发布时间】:2021-01-05 11:47:30 【问题描述】:我编写了一个简单的存储库来使用 TestContainers 测试 Kotlin Exposed。我使用的数据库是mysql。
这是我的代码:
class StudentsRepositoryTest: ShouldSpec(
val container = getMysqlContainer()
val mysqlJdbcUrl = container.jdbcUrl
beforeSpec
Database.connect(mysqlJdbcUrl, "com.mysql.cj.jdbc.Driver")
transaction
SchemaUtils.create(Students)
... // some tests
private fun getMysqlContainer(): MySQLContainer<Nothing>
return MySQLContainer<Nothing>("mysql:5.7").apply
withUsername("root")
withPassword("")
withEnv("MYSQL_ROOT_PASSWORD", "%")
withDatabaseName("test")
start()
代码在beforeSpec
处失败
Access denied for user ''@'172.17.0.1' (using password: NO)
也许我遗漏了什么,任何帮助将不胜感激
我使用的库:
kotest kotest-extension-testcontainers 测试容器 testcontainers-mysql【问题讨论】:
【参考方案1】:我终于找到了我的问题的答案。原因是我忘记将用户名和密码传递给与 Exposed 库的连接。
val mysqlJdbcUrl = container.jdbcUrl
val username = container.username
val password = container.password
Database.connect(mysqlJdbcUrl, "com.mysql.cj.jdbc.Driver", username, password)
【讨论】:
以上是关于TestContainers 和 Mysql:用户“@'172.17.0.1”的访问被拒绝(使用密码:否)的主要内容,如果未能解决你的问题,请参考以下文章
Spring + Testcontainers + Jpa + 具有多个用户/模式的 Oracle 数据库