### Issue description As the subject implies, `RegisterDial` is not safe to call from multiple goroutines. https://github.com/go-sql-driver/mysql/blob/1a676ac6e4dce68e9303a1800773861350374a9e/driver.go#L43 ### Example code ```go var wg sync.WaitGroup wg.Add(1) go func() { mysql.RegisterDial("dial1", func(string) (net.Conn, error) { return nil, errors.New("bork") }) wg.Done() }() go func() { mysql.RegisterDial("dial2", func(string) (net.Conn, error) { return nil, errors.New("bork") }) wg.Done() }() wg.Wait() sql.Open("mysql", /* ... */) ```