IMHO it is really about security. If a table uses the federated storage engine, all one needs to do is this :
SHOW CREATE TABLE fedtblname\G
and you can see the connection information (server IP, database, table name, username, password) of the real MyISAM table on the remote DB server, and all in plain text.
It is too bad that the connection information is not encrypted.
The bottom line is that you can use federated option in my.cnf totally at your own risk.
UPDATE 2012-01-18 11:31 EDT
It was pointed out that you can create a server definition and then define that server definition in the CONNECTION option of the federated table.
I tested this out and it works great.
However, there is still a security flaw. If you can SELECT from the table mysql.servers, you can see all definitions. Here is the table's layout:
mysql> show create table mysql.servers\G
*************************** 1. row ***************************
Table: servers
Create Table: CREATE TABLE `servers` (
`Server_name` char(64) NOT NULL DEFAULT '',
`Host` char(64) NOT NULL DEFAULT '',
`Db` char(64) NOT NULL DEFAULT '',
`Username` char(64) NOT NULL DEFAULT '',
`Password` char(64) NOT NULL DEFAULT '',
`Port` int(4) NOT NULL DEFAULT '0',
`Socket` char(64) NOT NULL DEFAULT '',
`Wrapper` char(64) NOT NULL DEFAULT '',
`Owner` char(64) NOT NULL DEFAULT '',
PRIMARY KEY (`Server_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='MySQL Foreign Servers table'
1 row in set (0.00 sec)
mysql>
In order to see the server definitions, run this query:
SELECT * FROM mysql.servers\G
This will expose all remote servers known by the MySQL Instance, including the password in plain text.
To see all the federated tables, run this:
select table_schema,table_name from information_schema.tables where engine='federated';
This confirms my original assertion: all one needs to do is this :
SHOW CREATE TABLE fedtblname\G
and you can see the connection information (server IP, database, table name, username, password) of the real MyISAM table on the remote DB server, and all in plain text. As given by my update, that plain text info is located in mysql.servers.