How to grant MySQL user privilege to "SHOW TABLES"
From the official MySQL Documentation, You see only those databases for which you have some kind of privilege, unless you have the global SHOW DATABASES privilege.

Check the grants for the connected user. To check grants:

SHOW GRANTS FOR root(user);


For example, if you wish grant SELECT privileges to a user, login as root (user with grant privilege) and issue the following command statement.

GRANT SELECT ON *.* to 'user'@'host';


Also, from the same document, you can use the mysqlshow command to display database and table information.

I hope this answer will help you. Thanks.