maria-developers team mailing list archive
-
maria-developers team
-
Mailing list archive
-
Message #10180
Re: [Commits] 02e74a5: MDEV-11700: MariaDB 10.2 cannot start on MySQL 5.7 datadir:
nit - its really MDEV-11170
On 12/12/16 12:57, Vicențiu Ciorbaru wrote:
> Hi Sergei!
>
> Can you please review this patch for MDEV-11700? Details presented in
> the commit message. I'm not sure which solution we want.
> Possible solutions:
> A) have the user fix it by first starting the server with
> --skip-grant-tables to avoid "mysql.user table is damaged", then run
> mysql_upgrade, to fix the problem. Without this patch, this solution
> fails at mysql_upgrade.
> B) Have the server understand MySQL 5.7.6 + table format where the
> Password column is missing.
>
> For 10.2 I've chosen solution A. Although this should probably also be
> targeted for 10.1?
> For 10.3, since we're planning on doing some authentication changes, we
> can implement a variant of B.
Without B or a population of the password column the authentication
isn't migrated.
>
> Thoughts?
>
> On Mon, 12 Dec 2016 at 03:50 vicentiu <vicentiu@xxxxxxxxxxx
> <mailto:vicentiu@xxxxxxxxxxx>> wrote:
>
> revision-id: 02e74a5614b08cfce505002abc26d4634648308e
> (mariadb-10.2.2-138-g02e74a5)
> parent(s): 9320d8ae30c18420bef659618175836221d363ea
> author: Vicențiu Ciorbaru
> committer: Vicențiu Ciorbaru
> timestamp: 2016-12-12 03:42:11 +0200
> message:
>
> MDEV-11700: MariaDB 10.2 cannot start on MySQL 5.7 datadir:
>
> Fatal error: mysql.user table is damaged or in unsupported 3.20 format
>
> The problem stems from MySQL 5.7.6. According to MySQL documentation:
> In MySQL 5.7.6, the Password column was removed and all credentials are
> stored in the authentication_string column.
>
> If opening a MySQL 5.7.6 (and up) datadir with MariaDB 10.2, the
> user table
> appears corrupted. In order to fix this, the server must be started with
> --skip-grant-tables and then a subsequent mysql_upgrade command must be
> issued.
>
> This patch updates the mysql_upgrade command to also add the removed
> Password column. The password column is necessary, otherwise
> the mysql_upgrade script fails due to the Event_scheduler not being able
> to start, as it can't find Event_priv in the table where it ought to be.
> MySQL's version has column position 28 (0 index) vs our datadir version
> expects position 29.
>
> ---
> scripts/mysql_system_tables_fix.sql | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/scripts/mysql_system_tables_fix.sql
> b/scripts/mysql_system_tables_fix.sql
> index ea1059c..80d0ef7 100644
> --- a/scripts/mysql_system_tables_fix.sql
> +++ b/scripts/mysql_system_tables_fix.sql
> @@ -164,6 +164,12 @@ ALTER TABLE user
> MODIFY Host char(60) NOT NULL default '',
> MODIFY User char(80) NOT NULL default '',
> ENGINE=MyISAM, CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
> +
> +# In MySQL 5.7.6 the Password column is removed. Recreate it to
> preserve the number
> +# of columns MariaDB expects in the user table.
> +ALTER TABLE user
> + ADD Password char(41) character set latin1 collate latin1_bin NOT
> NULL default '' AFTER User;
> +
> ALTER TABLE user
> MODIFY Password char(41) character set latin1 collate latin1_bin
> NOT NULL default '',
> MODIFY Select_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT
> 'N' NOT NULL,
>
>
>
> _______________________________________________
> commits mailing list
> commits@xxxxxxxxxxx
> https://lists.askmonty.org/cgi-bin/mailman/listinfo/commits
>
Follow ups
References