@@ -91,7 +91,11 @@ func RunSidecarCommand(cfg *Config, stop <-chan struct{}) error {
9191func configureOrchestratorUser (cfg * Config ) error {
9292 query := `
9393 SET @@SESSION.SQL_LOG_BIN = 0;
94- GRANT SUPER, PROCESS, REPLICATION SLAVE, REPLICATION CLIENT, RELOAD ON *.* TO ?@'%%' IDENTIFIED BY ?;
94+
95+ CREATE USER IF NOT EXISTS ?@'%%';
96+ ALTER USER ?@'%%' IDENTIFIED BY ?;
97+
98+ GRANT SUPER, PROCESS, REPLICATION SLAVE, REPLICATION CLIENT, RELOAD ON *.* TO ?@'%%';
9599 GRANT SELECT ON %s.* TO ?@'%%';
96100 GRANT SELECT ON mysql.slave_master_info TO ?@'%%';
97101 `
@@ -101,8 +105,9 @@ func configureOrchestratorUser(cfg *Config) error {
101105 // https://github.com/golang/go/issues/18478
102106 query = fmt .Sprintf (query , toolsDbName )
103107
104- if err := runQuery (cfg , query , cfg .OrchestratorUser , cfg .OrchestratorPassword ,
105- cfg .OrchestratorUser , cfg .OrchestratorPassword ); err != nil {
108+ user := cfg .OrchestratorUser
109+ pass := cfg .OrchestratorPassword
110+ if err := runQuery (cfg , query , user , user , pass , user , user , user ); err != nil {
106111 return fmt .Errorf ("failed to configure orchestrator (user/pass/access), err: %s" , err )
107112 }
108113
@@ -112,9 +117,15 @@ func configureOrchestratorUser(cfg *Config) error {
112117func configureReplicationUser (cfg * Config ) error {
113118 query := `
114119 SET @@SESSION.SQL_LOG_BIN = 0;
115- GRANT SELECT, PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO ?@'%' IDENTIFIED BY ?;
120+
121+ CREATE USER IF NOT EXISTS ?@'%';
122+ ALTER USER ?@'%' IDENTIFIED BY ?;
123+
124+ GRANT SELECT, PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO ?@'%';
116125 `
117- if err := runQuery (cfg , query , cfg .ReplicationUser , cfg .ReplicationPassword ); err != nil {
126+ user := cfg .ReplicationUser
127+ pass := cfg .ReplicationPassword
128+ if err := runQuery (cfg , query , user , user , pass , user ); err != nil {
118129 return fmt .Errorf ("failed to configure replication user: %s" , err )
119130 }
120131
@@ -124,9 +135,16 @@ func configureReplicationUser(cfg *Config) error {
124135func configureExporterUser (cfg * Config ) error {
125136 query := `
126137 SET @@SESSION.SQL_LOG_BIN = 0;
127- GRANT SELECT, PROCESS, REPLICATION CLIENT ON *.* TO ?@'127.0.0.1' IDENTIFIED BY ? WITH MAX_USER_CONNECTIONS 3;
138+
139+ CREATE USER IF NOT EXISTS ?@'localhost';
140+ ALTER USER ?@'localhost' IDENTIFIED BY ? WITH MAX_USER_CONNECTIONS 3;
141+
142+ GRANT SELECT, PROCESS, REPLICATION CLIENT ON *.* TO ?@'localhost';
128143 `
129- if err := runQuery (cfg , query , cfg .MetricsUser , cfg .MetricsPassword ); err != nil {
144+
145+ user := cfg .MetricsUser
146+ pass := cfg .MetricsPassword
147+ if err := runQuery (cfg , query , user , user , pass , user ); err != nil {
130148 return fmt .Errorf ("failed to metrics exporter user: %s" , err )
131149 }
132150
0 commit comments