mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
3622644836
Renames the upgrade state file, and ensures the old file is properly removed when `mariadb-upgrade` tool is executed. All new code of the whole pull request, including one or several files that are either new files or modified ones, are contributed under the BSD-new license. I am contributing on behalf of my employer Amazon Web Services, Inc.
72 lines
2.6 KiB
Text
72 lines
2.6 KiB
Text
--echo #
|
|
--echo # MDEV-24363 10.4: change definition of mysql.user view
|
|
--echo # to reflect the correct value from mysql.global_priv
|
|
--echo # This change was added because mysql.user view definition
|
|
--echo # was already changed when mariadb.sys was introduced, so
|
|
--echo # it's decently ok if we change it again to fix mdev-24363
|
|
|
|
--echo #
|
|
--echo # Test that mysql.user password_expired column
|
|
--echo # shows the right value as in mysql.global_priv
|
|
--echo #
|
|
--disable_service_connection
|
|
create user gigi@localhost;
|
|
show create user gigi@localhost;
|
|
select password_expired from mysql.user where user='gigi' and host='localhost';
|
|
|
|
alter user gigi@localhost password expire;
|
|
show create user gigi@localhost;
|
|
select password_expired from mysql.user where user='gigi' and host='localhost';
|
|
|
|
drop user gigi@localhost;
|
|
--enable_service_connection
|
|
|
|
--echo #
|
|
--echo # Test that upgrades from 10.4+ versions before this mdev
|
|
--echo # correctly drop and recreate the mysql.user view
|
|
--echo #
|
|
|
|
--source include/mysql_upgrade_preparation.inc
|
|
|
|
use mysql;
|
|
|
|
# Do all these string operations to replace password_expired definition
|
|
# with "'N' as password_expired" and avoid listing in one more test
|
|
# all the fields of the user view
|
|
set @def = (select view_definition from information_schema.views where table_name='user' and table_schema='mysql');
|
|
set @trimmed_def = (select trim(trailing 'from `mysql`.`global_priv`' from @def));
|
|
set @newdef = (select concat(@trimmed_def, ", 'N' AS password_expired from mysql.global_priv"));
|
|
set @pos = (select instr(@newdef, 'password_expired'));
|
|
let $viewdef = `select insert(@newdef, @pos, 3, 'abc')`;
|
|
|
|
--eval create or replace view user as $viewdef;
|
|
|
|
create user gigi@localhost;
|
|
show create user gigi@localhost;
|
|
select password_expired from mysql.user where user='gigi' and host='localhost';
|
|
|
|
# password should be expired, but mysql.user.password_expired should be 'N'
|
|
alter user gigi@localhost password expire;
|
|
show create user gigi@localhost;
|
|
select password_expired from mysql.user where user='gigi' and host='localhost';
|
|
|
|
drop user gigi@localhost;
|
|
|
|
--echo # Run mysql_upgrade
|
|
--exec $MYSQL_UPGRADE 2>&1
|
|
let $MYSQLD_DATADIR= `select @@datadir`;
|
|
--file_exists $MYSQLD_DATADIR/mariadb_upgrade_info
|
|
--remove_file $MYSQLD_DATADIR/mariadb_upgrade_info
|
|
|
|
create user gigi@localhost;
|
|
show create user gigi@localhost;
|
|
select password_expired from mysql.user where user='gigi' and host='localhost';
|
|
|
|
# mysql.user view should've been recreated by mariadb_upgrade, thus
|
|
# password_expired should show 'Y'
|
|
alter user gigi@localhost password expire;
|
|
show create user gigi@localhost;
|
|
select password_expired from mysql.user where user='gigi' and host='localhost';
|
|
|
|
drop user gigi@localhost;
|
|
|