diff --git a/internal/resource/ps/cmd/cmd.go b/internal/resource/ps/cmd/cmd.go index d3688fb..c9c0fb2 100644 --- a/internal/resource/ps/cmd/cmd.go +++ b/internal/resource/ps/cmd/cmd.go @@ -2,6 +2,7 @@ package cmd import ( "fmt" + "terraform-percona/internal/db" ) func Restart() string { @@ -115,6 +116,6 @@ func InstallPMMClient(addr string) string { sudo pmm-admin config --server-insecure-tls --server-url="%s"`, addr) } -func AddServiceToPMM(username, password string, port int) string { - return fmt.Sprintf(`pmm-admin add mysql --query-source=slowlog --username="%s" --password="%s" --port=%d`, username, password, port) +func AddServiceToPMM(password string, port int) string { + return fmt.Sprintf(`pmm-admin add mysql --query-source=slowlog --username="%s" --password="%s" --port=%d`, db.UserPMM, password, port) } diff --git a/internal/resource/ps/manager.go b/internal/resource/ps/manager.go index 635d930..5b7fe3e 100644 --- a/internal/resource/ps/manager.go +++ b/internal/resource/ps/manager.go @@ -344,7 +344,7 @@ func (m *manager) instanceConfig(ctx context.Context, instance cloud.Instance, i "enforce-gtid-consistency": "ON", } if serverID == 1 { - cfg["bind-address"] = instance.PrivateIpAddress + cfg["bind-address"] = strings.Join([]string{instance.PrivateIpAddress, "localhost"}, ",") } return cfg case replicationTypeGR: @@ -390,7 +390,7 @@ func (m *manager) setupInstances(ctx context.Context, instances []cloud.Instance } for _, instance := range instances { if m.pmmAddress != "" { - _, err := m.runCommand(ctx, instance, cmd.AddServiceToPMM("pmm", m.pmmPassword, m.port)) + _, err := m.runCommand(ctx, instance, cmd.AddServiceToPMM(m.pmmPassword, m.port)) if err != nil { return errors.Wrap(err, "add service to pmm") } diff --git a/internal/resource/pxc/cmd/cmd.go b/internal/resource/pxc/cmd/cmd.go index 73d8913..e5141b1 100644 --- a/internal/resource/pxc/cmd/cmd.go +++ b/internal/resource/pxc/cmd/cmd.go @@ -2,6 +2,7 @@ package cmd import ( "fmt" + "terraform-percona/internal/db" ) func RetrieveVersions() string { @@ -43,6 +44,10 @@ func Start(bootstrap bool) string { return "sudo systemctl start mysql" } +func FixRootUser(rootPassword string) string { + return fmt.Sprintf(`mysql -uroot -p%s -e "RENAME USER 'root'@'localhost' TO 'root'@'%%';FLUSH PRIVILEGES;"`, rootPassword) +} + func Stop(bootstrap bool) string { if bootstrap { return "sudo systemctl stop mysql@bootstrap.service" @@ -59,6 +64,6 @@ func InstallPMMClient(addr string) string { sudo pmm-admin config --server-insecure-tls --server-url="%s"`, addr) } -func AddServiceToPMM(username, password string, port int) string { - return fmt.Sprintf(`pmm-admin add mysql --query-source=slowlog --username="%s" --password="%s" --port=%d`, username, password, port) +func AddServiceToPMM(password string, port int) string { + return fmt.Sprintf(`pmm-admin add mysql --query-source=slowlog --username="%s" --password="%s" --port=%d`, db.UserPMM, password, port) } diff --git a/internal/resource/pxc/manager.go b/internal/resource/pxc/manager.go index fff68d7..1401ee1 100644 --- a/internal/resource/pxc/manager.go +++ b/internal/resource/pxc/manager.go @@ -137,7 +137,7 @@ func (m *manager) Create(ctx context.Context) ([]cloud.Instance, error) { if err != nil { return nil, errors.Wrap(err, "failed to edit default cfg for pmm") } - _, err = m.runCommand(ctx, instance, cmd.AddServiceToPMM("pmm", m.pmmPassword, m.mysqlPort)) + _, err = m.runCommand(ctx, instance, cmd.AddServiceToPMM(m.pmmPassword, m.mysqlPort)) if err != nil { return nil, errors.Wrap(err, "add service to pmm") } @@ -173,6 +173,16 @@ func (m *manager) installPXC(ctx context.Context, instance cloud.Instance, clust if err != nil { return errors.Wrap(err, "failed to run pxc install cmd") } + if _, err = m.cloud.RunCommand(ctx, m.resourceID, instance, cmd.Start(false)); err != nil { + return errors.Wrap(err, "pxc start") + } + _, err = m.cloud.RunCommand(ctx, m.resourceID, instance, cmd.FixRootUser(m.password)) + if err != nil { + return errors.Wrap(err, "pxc fix root user") + } + if _, err = m.cloud.RunCommand(ctx, m.resourceID, instance, cmd.Stop(false)); err != nil { + return errors.Wrap(err, "pxc stop") + } err = m.editDefaultCfg(ctx, instance, "mysqld", map[string]string{ "port": strconv.Itoa(m.mysqlPort), "wsrep_cluster_address": "gcomm://" + strings.Join(clusterHosts, ","),