[Phpmyadmin-devel] SHOW DATABASES on ISPs

Sebastian Mendel lists at sebastianmendel.de
Wed Jan 23 14:17:03 CET 2008


cand. inf. Alexander M. Turek schrieb:
> Hi there,
> 
> Sebastian Mendel schrieb:
>> SHOW DATABASES seems somehow slow on ISPs
>>
>> how about using I_S.SCHEMA_PRIVILEGES
> 
> What about information_schema.SCHEMATA? I guess, that's the purpose of 
> that view.

with this feature implemented the sysadmin can choose, but I_S.SCHEMATA is 
much slower than I_S.SCHEMA_PRIVILEGES, cause privileges are in RAM, but for 
I_S.SCHEMATA a directory scan is done, and all database informations a 
collected (default charset, engine, aso.)


>> possible a configuration where ISP can use I_S.SCHEMA_PRIVILEGES 
>> instead of SHOW DATABASES,
> 
> Switching from SHOW queries to information_schema is a good idea, imho. 
> Since the next version of phpMyAdmin won't support MySQL 4.x anymore, I 
> don't see, why a config parameter is needed for that switch.

cause I_S.SCHEMA_PRIVILEGES contains only databases with explicit privileges 
for the current users, not all, and as stated above I_S.SCHEMATA can be much 
much slower them SHOW DATABASES or SHOW DATABASES LIKE '...'


>> or they can switch to SHOW DATABASES like '[user]_%' which performs 
>> much faster too
> 
> This is a little dangerous because it enables the ISPs to hide databases 
> from the user. Your query would hide all other databases from the user, 
> especially information_schema and the test databases that are enabled by 
> default. And of course the database [user] that you may create in 
> server_privileges. ;-)

why is this 'dangerous', it is up to the sysadmin, on most ISP installations 
there is no need for I_S to the user, `test` is disabled from anonymous 
access, and all databases for the user start with a specific prefix


> We've had a similar discussion when MySQL 4.1 became stable and MySQL's 
> privilege upgrade script was a little buggy, so all users could see the 
> whole database listing, even if they weren't allowed to access most of 
> the listed databases. Though, I don't know if the guys have fixed that, 
> yet.

as this solution is mainly for ISPs and the default will still be SHOw 
DATABASES and i think ISPs take care what users can see and not this should 
not be a problem


> The problem is, that you create the illusion of a security that is not 
> there (users don't see certain databases, although they may access them 
> via manual queries). So far, we have tried to avoid such situations.

hiding databases from listing is currently possible too


-- 
Sebastian




More information about the Developers mailing list