Proposal: per-connection credential provider for short-lived MySQL credentials
Mantenedores costumam responder em até 10 dias
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 35/100
- Tipo de issue
- Funcionalidade
- Clareza
- Razoavelmente clara
- Status de atividade
- Ativa
- Stack de tecnologia
- go, mysql
- Domínio
- backend-api-design, databases
Direção de pesquisa
Comece rastreando os entry points go/mysql ConnectionConfig, Password.MigrationContext, CliPasswordProvider e ApplyCredentials. Em seguida, siga os caminhos de conexão de reconexão descritos em database/sql, failover, cut-over e binlog-reader e determine como o provider proposto seria invocado antes de cada tentativa. Considera-se concluído quando o comportamento da API e a precedência estiverem definidos e cobertos para cada caminho de conexão relevante.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Problem
Managed MySQL services and other credential providers supply short-lived database credentials: e.g. AWS IAM for RDS, GCP Cloud SQL IAM, and HashiCorp Vault's database secrets engine. Currently, gh-ost captures a password once and reuses it for the life of the migration, so there is no way to supply a renewed valid credential when a new connection is dialed mid-migration.
New connections are opened in at least the following cases:
• database/sql re-dials after ErrBadConn or a server-side wait_timeout
• a failover forces reconnection
• the cut-over takes a fresh pinned connection for its lock
• the binlog reader is rebuilt after a streaming failure surfaces
Proposed API and scope
// go/mysql
type PasswordProvider func(ctx context.Context, key InstanceKey) (string, error)
ConnectionConfig.PasswordProvider takes precedence over Password.MigrationContext. CliPasswordProvider is copied into the connection config by ApplyCredentials. The provider is called immediately before each connection attempt.
This is deliberately an API for programs embedding gh-ost . It does not add built-in cloud IAM support or a credential-fetching CLI flag, and introduces no cloud SDK dependency. An embedding caller implements it with an AWS SigV4 token, an Entra or Cloud SQL access token, a Vault lease, a password command, or a closure over a static string.
Example: embedding with AWS RDS IAM
ctx.CliPasswordProvider = func(c context.Context, key mysql.InstanceKey)
(string, error) {
return auth.BuildAuthToken(
c, key.DisplayString(), awsConfig.Region, ctx.CliUser, awsConfig.Credentials,
)
}
ctx.CliAllowCleartextPasswords = true
ctx.UseTLS = true
ctx.TLSCACertificate = "/etc/ssl/certs/rds-ca-bundle.pem"
Would a library hook be an acceptable first interface, or would you prefer a CLI-facing mechanism such as a credentials file or a password command?
- Linguagem predominante
- Go
- Estrelas
- 13.6k
- Forks
- 1.4k
- Merge médio
- 9d 19h
- PRs com merge (30d)
- 1
Preparar o ambiente
- Inclui um Dockerfile ou arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de github/gh-ost
-
`--resume` without `--execute` drops the ghost table it correctly skipped alteringTalvez já em andamento @ajm188 assumiu há 56 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 86/100
Mantenedores costumam responder em até 10 dias
-
[Suggestion] Apply simple validation to alter commandTalvez já em andamento @drkemp187 assumiu há 106 dias. Abertaenhancement good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 64/100
github/gh-ost#1431 · 4 comentários ·
Mantenedores costumam responder em até 10 dias
-
Migration hangs when --attempt-instant-ddl succeedsTalvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Aberta
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 30/100
Mantenedores costumam responder em até 10 dias
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 42/100
Mantenedores costumam responder em até 10 dias
-
Atomic cut-over always fails on MySQL 9.1+: information_schema.processlist errors out (3854) while another session runs a non-BMP utf8mb4 statementTalvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Aberta
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 52/100
github/gh-ost#1780 · 1 comentário ·
Mantenedores costumam responder em até 10 dias
Todas as issues de github/gh-ost
Issues semelhantes
-
[Docs] Four internal links return 404 (Models concept, Contributing to Docs, Providers reference)Talvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
meshery/meshery#23520 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
flaky: execenv TestRelayControlledCancelAndDirectParentDeath reads an empty pid file under loadAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
SocialGouv/iterion#3263 ·
Mantenedores costumam responder em até 1 dia
-
Container registry refuses image names with "__" or "--" (NAME_INVALID), which the OCI distribution spec allows since v1.1.0Talvez já em andamento @lazerg assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia
-
Unsupported language versionAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
itadori26/trisse-home#226 ·
Mantenedores costumam responder em até 1 dia