Bug #99148 Util.checkForServerUpgrade: The upgrade check needs to be performed by user with
Submitted: 1 Apr 2020 10:25 Modified: 7 Apr 2020 2:46
Reporter: yue can Email Updates:
Status: Not a Bug Impact on me:
None 
Category:MySQL Server Severity:S3 (Non-critical)
Version:MySQLshell 8.0.19 OS:Linux (7.5)
Assigned to: MySQL Verification Team CPU Architecture:Any
Tags: mysqlshell8.0.19

[1 Apr 2020 10:25] yue can
Description:
when use the mysqlshell8.0.19 to check mysql server to update,it report :

# /usr/local/mysqlshell8019/bin/mysqlsh 'root'@'127.0.0.1:8001' -e "util.checkForServerUpgrade()" 

Please provide the password for 'root@127.0.0.1:8001': **********
Save password for 'root@127.0.0.1:8001'? [Y]es/[N]o/Ne[v]er (default No): yy
Util.checkForServerUpgrade: The upgrade check needs to be performed by user with ALL privileges. (LogicError)
 at (command line):1:5
in util.checkForServerUpgrade()
        ^

How to repeat:
1.download Linux-Generic mysql-shell-8.0.19-linux-glibc2.12-x86-64bit.tar.gz
2.Unzip file and change permission
3.run the check program use root or any other user who have all privileges

# /usr/local/mysqlshell8019/bin/mysqlsh 'root'@'127.0.0.1:8001' -e "util.checkForServerUpgrade()" 

4.you can get it 

Suggested fix:
There seems to be a problem with permission identification,
No such problem in MySQL shell 8.0.18
[2 Apr 2020 14:20] MySQL Verification Team
Hi,

I'm not reproducing your problem.

[arhimed@localdev msb_8_0_19]$ ./mysqlsh 'root'@'127.0.0.1:8019'
Please provide the password for 'root@127.0.0.1:8019': ********
MySQL Shell 8.0.19

Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
Other names may be trademarks of their respective owners.

Type '\help' or '\?' for help; '\quit' to exit.
Creating a session to 'root@127.0.0.1:8019'
Fetching schema names for autocompletion... Press ^C to stop.
Your MySQL connection id is 13
Server version: 8.0.19 MySQL Community Server - GPL
No default schema selected; type \use <schema> to set one.
 MySQL  127.0.0.1:8019 ssl  JS > util.checkForServerUpgrade()
The MySQL server at 127.0.0.1:8019, version 8.0.19 - MySQL Community Server -
GPL, will now be checked for compatibility issues for upgrade to MySQL 8.0.19...
Util.checkForServerUpgrade: Detected MySQL server version is 8.0.19, but this tool supports server versions up to 8.0.18. You must upgrade MySQL Shell to the latest version to be able to check this server (LogicError)
 MySQL  127.0.0.1:8019 ssl  JS > \q
Bye!
[arhimed@localdev msb_8_0_19]$ ./mysqlsh 'msandbox'@'127.0.0.1:8019'
Please provide the password for 'msandbox@127.0.0.1:8019': ********
MySQL Shell 8.0.19

Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
Other names may be trademarks of their respective owners.

Type '\help' or '\?' for help; '\quit' to exit.
Creating a session to 'msandbox@127.0.0.1:8019'
Fetching schema names for autocompletion... Press ^C to stop.
Your MySQL connection id is 16
Server version: 8.0.19 MySQL Community Server - GPL
No default schema selected; type \use <schema> to set one.
 MySQL  127.0.0.1:8019 ssl  JS > util.checkForServerUpgrade()
The MySQL server at 127.0.0.1:8019, version 8.0.19 - MySQL Community Server -
GPL, will now be checked for compatibility issues for upgrade to MySQL 8.0.19...
Util.checkForServerUpgrade: Detected MySQL server version is 8.0.19, but this tool supports server versions up to 8.0.18. You must upgrade MySQL Shell to the latest version to be able to check this server (LogicError)
 MySQL  127.0.0.1:8019 ssl  JS > util.checkForServerUpgrade()
The MySQL server at 127.0.0.1:8019, version 8.0.19 - MySQL Community Server -
GPL, will now be checked for compatibility issues for upgrade to MySQL 8.0.19...
Util.checkForServerUpgrade: Detected MySQL server version is 8.0.19, but this tool supports server versions up to 8.0.18. You must upgrade MySQL Shell to the latest version to be able to check this server (LogicError)
 MySQL  127.0.0.1:8019 ssl  JS > \q
Bye!
[arhimed@localdev msb_8_0_19]$ ./mysqlsh --version
/home/arhimed/opt/mysql/8.0.19/bin/mysqlsh   Ver 8.0.19 for Linux on x86_64 - for MySQL 8.0.19 (MySQL Community Server (GPL))
[arhimed@localdev msb_8_0_19]$
[6 Apr 2020 10:02] MySQL Verification Team
Hi,

We manage to reproduce the issue if you have wrongly setup permissions like for e.g.

GRANT ALL PRIVILEGES ON `%`.* TO `root`@`localhost`

the `%` is invalid in this context
[7 Apr 2020 2:11] yue can
I tried to do an upgrade check on MySQL 8.0.18 and MySQL 8.0.16 using MySQLshell8.0.19 and both had this problem.
The root@'localhost' permissions are set as follows.

root@localhost: 21:52:  [(none)]> grant all privileges on *.* to root@'localhost';
Query OK, 0 rows affected, 1 warning (0.00 sec)

root@localhost: 21:52:  [(none)]> show grants for root@'localhost'\G;
*************************** 1. row ***************************
Grants for root@localhost: GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `root`@`localhost` WITH GRANT OPTION
*************************** 2. row ***************************
Grants for root@localhost: GRANT APPLICATION_PASSWORD_ADMIN,BACKUP_ADMIN,BINLOG_ADMIN,BINLOG_ENCRYPTION_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,GROUP_REPLICATION_ADMIN,PERSIST_RO_VARIABLES_ADMIN,REPLICATION_SLAVE_ADMIN,RESOURCE_GROUP_ADMIN,RESOURCE_GROUP_USER,ROLE_ADMIN,SERVICE_CONNECTION_ADMIN,SESSION_VARIABLES_ADMIN,SET_USER_ID,SYSTEM_USER,SYSTEM_VARIABLES_ADMIN,TABLE_ENCRYPTION_ADMIN,XA_RECOVER_ADMIN ON *.* TO `root`@`localhost` WITH GRANT OPTION
*************************** 3. row ***************************
Grants for root@localhost: GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION
[7 Apr 2020 2:33] MySQL Verification Team
Hi,

I cannot reproduce this. What does SELECT * FROM mysql.user gives you ? (please blank the password hashes)
[7 Apr 2020 2:46] yue can
hi,The results are as follows.
root@localhost: 22:40:  [(none)]> SELECT * FROM mysql.user \G;
*************************** 1. row ***************************
                    Host: localhost
                    User: mysql.infoschema
             Select_priv: Y
             Insert_priv: N
             Update_priv: N
             Delete_priv: N
             Create_priv: N
               Drop_priv: N
             Reload_priv: N
           Shutdown_priv: N
            Process_priv: N
               File_priv: N
              Grant_priv: N
         References_priv: N
              Index_priv: N
              Alter_priv: N
            Show_db_priv: N
              Super_priv: N
   Create_tmp_table_priv: N
        Lock_tables_priv: N
            Execute_priv: N
         Repl_slave_priv: N
        Repl_client_priv: N
        Create_view_priv: N
          Show_view_priv: N
     Create_routine_priv: N
      Alter_routine_priv: N
        Create_user_priv: N
              Event_priv: N
            Trigger_priv: N
  Create_tablespace_priv: N
                ssl_type: 
              ssl_cipher: 
             x509_issuer: 
            x509_subject: 
           max_questions: 0
             max_updates: 0
         max_connections: 0
    max_user_connections: 0
                  plugin: caching_sha2_password
   authentication_string: 
        password_expired: N
   password_last_changed: 2020-04-07 09:21:47
       password_lifetime: NULL
          account_locked: Y
        Create_role_priv: N
          Drop_role_priv: N
  Password_reuse_history: NULL
     Password_reuse_time: NULL
Password_require_current: NULL
         User_attributes: NULL
*************************** 2. row ***************************
                    Host: localhost
                    User: mysql.session
             Select_priv: N
             Insert_priv: N
             Update_priv: N
             Delete_priv: N
             Create_priv: N
               Drop_priv: N
             Reload_priv: N
           Shutdown_priv: N
            Process_priv: N
               File_priv: N
              Grant_priv: N
         References_priv: N
              Index_priv: N
              Alter_priv: N
            Show_db_priv: N
              Super_priv: Y
   Create_tmp_table_priv: N
        Lock_tables_priv: N
            Execute_priv: N
         Repl_slave_priv: N
        Repl_client_priv: N
        Create_view_priv: N
          Show_view_priv: N
     Create_routine_priv: N
      Alter_routine_priv: N
        Create_user_priv: N
              Event_priv: N
            Trigger_priv: N
  Create_tablespace_priv: N
                ssl_type: 
              ssl_cipher: 
             x509_issuer: 
            x509_subject: 
           max_questions: 0
             max_updates: 0
         max_connections: 0
    max_user_connections: 0
                  plugin: caching_sha2_password
   authentication_string: 
        password_expired: N
   password_last_changed: 2020-04-07 09:21:47
       password_lifetime: NULL
          account_locked: Y
        Create_role_priv: N
          Drop_role_priv: N
  Password_reuse_history: NULL
     Password_reuse_time: NULL
Password_require_current: NULL
         User_attributes: NULL
*************************** 3. row ***************************
                    Host: localhost
                    User: mysql.sys
             Select_priv: N
             Insert_priv: N
             Update_priv: N
             Delete_priv: N
             Create_priv: N
               Drop_priv: N
             Reload_priv: N
           Shutdown_priv: N
            Process_priv: N
               File_priv: N
              Grant_priv: N
         References_priv: N
              Index_priv: N
              Alter_priv: N
            Show_db_priv: N
              Super_priv: N
   Create_tmp_table_priv: N
        Lock_tables_priv: N
            Execute_priv: N
         Repl_slave_priv: N
        Repl_client_priv: N
        Create_view_priv: N
          Show_view_priv: N
     Create_routine_priv: N
      Alter_routine_priv: N
        Create_user_priv: N
              Event_priv: N
            Trigger_priv: N
  Create_tablespace_priv: N
                ssl_type: 
              ssl_cipher: 
             x509_issuer: 
            x509_subject: 
           max_questions: 0
             max_updates: 0
         max_connections: 0
    max_user_connections: 0
                  plugin: caching_sha2_password
   authentication_string: 
        password_expired: N
   password_last_changed: 2020-04-07 09:21:47
       password_lifetime: NULL
          account_locked: Y
        Create_role_priv: N
          Drop_role_priv: N
  Password_reuse_history: NULL
     Password_reuse_time: NULL
Password_require_current: NULL
         User_attributes: NULL
*************************** 4. row ***************************
                    Host: localhost
                    User: root
             Select_priv: Y
             Insert_priv: Y
             Update_priv: Y
             Delete_priv: Y
             Create_priv: Y
               Drop_priv: Y
             Reload_priv: Y
           Shutdown_priv: Y
            Process_priv: Y
               File_priv: Y
              Grant_priv: Y
         References_priv: Y
              Index_priv: Y
              Alter_priv: Y
            Show_db_priv: Y
              Super_priv: Y
   Create_tmp_table_priv: Y
        Lock_tables_priv: Y
            Execute_priv: Y
         Repl_slave_priv: Y
        Repl_client_priv: Y
        Create_view_priv: Y
          Show_view_priv: Y
     Create_routine_priv: Y
      Alter_routine_priv: Y
        Create_user_priv: Y
              Event_priv: Y
            Trigger_priv: Y
  Create_tablespace_priv: Y
                ssl_type: 
              ssl_cipher: 
             x509_issuer: 
            x509_subject: 
           max_questions: 0
             max_updates: 0
         max_connections: 0
    max_user_connections: 0
                  plugin: mysql_native_password
   authentication_string: 
        password_expired: N
   password_last_changed: 2020-04-07 09:25:22
       password_lifetime: NULL
          account_locked: N
        Create_role_priv: Y
          Drop_role_priv: Y
  Password_reuse_history: NULL
     Password_reuse_time: NULL
Password_require_current: NULL
         User_attributes: NULL
4 rows in set (0.00 sec)