Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 9905791

Browse files
committed
Fixes MySQL custom TLS connection failure.
1 parent dd00ca9 commit 9905791

File tree

2 files changed

+18
-13
lines changed

2 files changed

+18
-13
lines changed

database/mysql/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
| `password` | | The user's password |
1111
| `host` | | The host to connect to. |
1212
| `port` | | The port to bind to. |
13+
| `tls` | | The custom TLS config name, use with `x-tls-` queries. |
1314
| `x-tls-ca` | | The location of the root certificate file. |
1415
| `x-tls-cert` | | Cert file location. |
1516
| `x-tls-key` | | Key file location. |

database/mysql/mysql.go

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -123,15 +123,6 @@ func (m *Mysql) Open(url string) (database.Driver, error) {
123123
q.Set("multiStatements", "true")
124124
purl.RawQuery = q.Encode()
125125

126-
c, err := urlToMySQLConfig(*migrate.FilterCustomQuery(purl))
127-
if err != nil {
128-
return nil, err
129-
}
130-
db, err := sql.Open("mysql", c.FormatDSN())
131-
if err != nil {
132-
return nil, err
133-
}
134-
135126
migrationsTable := purl.Query().Get("x-migrations-table")
136127
if len(migrationsTable) == 0 {
137128
migrationsTable = DefaultMigrationsTable
@@ -151,9 +142,13 @@ func (m *Mysql) Open(url string) (database.Driver, error) {
151142
return nil, ErrAppendPEM
152143
}
153144

154-
certs, err := tls.LoadX509KeyPair(purl.Query().Get("x-tls-cert"), purl.Query().Get("x-tls-key"))
155-
if err != nil {
156-
return nil, err
145+
clientCert := make([]tls.Certificate, 0, 1)
146+
if purl.Query().Get("x-tls-cert") != "" && purl.Query().Get("x-tls-key") != "" {
147+
certs, err := tls.LoadX509KeyPair(purl.Query().Get("x-tls-cert"), purl.Query().Get("x-tls-key"))
148+
if err != nil {
149+
return nil, err
150+
}
151+
clientCert = append(clientCert, certs)
157152
}
158153

159154
insecureSkipVerify := false
@@ -167,12 +162,21 @@ func (m *Mysql) Open(url string) (database.Driver, error) {
167162

168163
mysql.RegisterTLSConfig(ctls, &tls.Config{
169164
RootCAs: rootCertPool,
170-
Certificates: []tls.Certificate{certs},
165+
Certificates: clientCert,
171166
InsecureSkipVerify: insecureSkipVerify,
172167
})
173168
}
174169
}
175170

171+
c, err := urlToMySQLConfig(*migrate.FilterCustomQuery(purl))
172+
if err != nil {
173+
return nil, err
174+
}
175+
db, err := sql.Open("mysql", c.FormatDSN())
176+
if err != nil {
177+
return nil, err
178+
}
179+
176180
mx, err := WithInstance(db, &Config{
177181
DatabaseName: purl.Path,
178182
MigrationsTable: migrationsTable,

0 commit comments

Comments
 (0)