【问题标题】:Proper permissions for "SHOW TABLE STATUS" in MySQLMySQL 中“SHOW TABLE STATUS”的正确权限
【发布时间】:2010-11-18 15:18:03
【问题描述】:
我可以对 MySQL 数据库中的表进行插入、更新、删除等操作,但无法显示表状态。有谁知道这样做需要哪些特权?
这是我的错误信息:
Access denied for user 'admin459'@'localhost' to database 'sample'
【问题讨论】:
标签:
mysql
mysql-error-1045
【解决方案1】:
我只需要最小(仅选择)权限即可获得表状态。什么版本的mysql?
grant select on test_dev.districts to td3@localhost identified by 'monkey';
然后:
mysql -pmonkey -u td3 TAMS_development -e 'show table status;'
有效。
这会给你带来什么?
show grants for admin459@localhost;
【解决方案2】:
看起来很奇怪……即使是我的 MySQL 用户也可以在他们各自的数据库上执行 SHOW TABLE STATUS。
你能举一个你正在尝试的确切语法的例子吗?
例如SHOW TABLE STATUS IN sample LIKE 'users'
【解决方案3】:
也许可以尝试另一种方式来查看有关特定表的所有信息,
尤其是 column cmets(在 SHOW TABLE STATUS 期间“拒绝访问”旁边):
直接访问数据库的 INFORMATION_SCHEMA(如果您有
SELECT-特权)。
有关表格本身的信息(通常是一个元组):
SELECT
*
FROM
information_schema.tables
WHERE
table_schema = 'my_db'
AND table_name = 'my_tab_name'
;
有关列的信息:
SELECT
table_name
, column_name
, column_comment
FROM
information_schema.columns
WHERE
table_schema = 'my_db'
AND table_name = 'my_tab_name'
;
它对我有用。
还有一个
SHOW TABLES FROM information_schema;
为您提供所有可用的“信息表”。
和/或使用快捷方式,如“Show Comment of Fields FROM Mysql Table”中所述
SHOW FULL COLUMNS FROM my_tab_name;