catalog def定义了MySQL如何组织存储这些元数据的方式。它包括定义元数据的表结构、列定义、索引、预定义的视图等。
CREATE TABLE mysql.columns_priv ( Host char(60) COLLATE utf8_bin NOT NULL DEFAULT '', Db char(64) COLLATE utf8_bin NOT NULL DEFAULT '', User char(16) COLLATE utf8_bin NOT NULL DEFAULT '', Table_name char(64) COLLATE utf8_bin NOT NULL DEFAULT '', Column_name char(64) COLLATE utf8_bin NOT NULL DEFAULT '', Timestamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, Column_priv set('Select','Insert','Update','References') CHARACTER SET utf8 NOT NULL DEFAULT '', PRIMARY KEY (Host,Db,User,Table_name,Column_name) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Column privileges';
以上代码是MySQL中的一个catalog表的定义,它定义了columns_priv表,用于存储列级权限信息。表的列包括主机名、数据库名、用户名、表名、列名、时间戳和列权限。
catalog def的修改可能会对MySQL的性能和正确性产生影响,因此需要注意数据一致性和安全性,特别是在修改系统表时要格外小心。