From e2171e01626917d844731a37a78801b443678b0a Mon Sep 17 00:00:00 2001 From: Shlomi Noach Date: Sun, 3 Sep 2017 10:27:04 +0300 Subject: [PATCH] Validating password length --- go/logic/applier.go | 2 +- go/logic/inspect.go | 3 +++ go/mysql/utils.go | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/go/logic/applier.go b/go/logic/applier.go index 3b934fe..9ecc34c 100644 --- a/go/logic/applier.go +++ b/go/logic/applier.go @@ -200,7 +200,7 @@ func (this *Applier) CreateChangelogTable() error { id bigint auto_increment, last_update timestamp not null DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, hint varchar(64) charset ascii not null, - value varchar(255) charset ascii not null, + value varchar(4096) charset ascii not null, primary key(id), unique key hint_uidx(hint) ) auto_increment=256 diff --git a/go/logic/inspect.go b/go/logic/inspect.go index b0088d5..bbf375f 100644 --- a/go/logic/inspect.go +++ b/go/logic/inspect.go @@ -169,6 +169,9 @@ func (this *Inspector) inspectOriginalAndGhostTables() (err error) { // validateConnection issues a simple can-connect to MySQL func (this *Inspector) validateConnection() error { + if len(this.connectionConfig.Password) > mysql.MaxReplicationPasswordLength { + return fmt.Errorf("MySQL replication length limited to 32 characters. See https://dev.mysql.com/doc/refman/5.7/en/assigning-passwords.html") + } query := `select @@global.port, @@global.version` var port int if err := this.db.QueryRow(query).Scan(&port, &this.migrationContext.InspectorMySQLVersion); err != nil { diff --git a/go/mysql/utils.go b/go/mysql/utils.go index 4df7639..b670921 100644 --- a/go/mysql/utils.go +++ b/go/mysql/utils.go @@ -17,6 +17,7 @@ import ( ) const MaxTableNameLength = 64 +const MaxReplicationPasswordLength = 32 type ReplicationLagResult struct { Key InstanceKey