information_schema.TABLES怎么过滤没权限的库
时间: 2024-01-22 08:18:35 浏览: 41
如果你没有权限访问某个数据库,那么在使用 `information_schema.TABLES` 查询时,该数据库的表信息将不会显示。如果你想要过滤掉没有权限访问的库,可以使用以下语句:
```
SELECT * FROM information_schema.TABLES WHERE TABLE_SCHEMA NOT IN ('mysql', 'performance_schema', 'information_schema');
```
这将返回所有你有权限访问的库中的表信息,而不包括 `mysql`, `performance_schema` 和 `information_schema` 这些系统库。你也可以添加其他需要过滤的库的名称。
相关问题
SELECT table_name FROM information_schema.tables WHERE table_schema = 'sharding_schema'; 这个查不出来
这个查询语句是用于查询指定数据库(此处是 `sharding_schema`)中的所有表名的。如果执行该语句没有查出任何结果,可能有以下几种情况:
1. 数据库中没有任何表,或者该数据库不存在。
2. 当前用户没有权限查询该数据库中的表名。你可以尝试使用 `SHOW GRANTS` 命令查看当前用户的权限。
3. 数据库连接信息配置不正确,导致无法连接到指定的数据库。你可以使用 `SHOW VARIABLES LIKE 'hostname'` 命令查看当前数据库主机名是否正确,并且确保用户名和密码正确。
请确认以上情况是否符合你的实际情况,如果还有疑问可以继续提出。
Database hosts array is empty. (SQL: select * from information_schema.tables where table_schema = forge and table_name = and table_type = 'BASE TABLE')
这个错误提示说明在数据库迁移过程中,Laravel无法找到正确的数据库主机信息。你可以按照以下步骤检查和解决该问题:
1. 确保你的 `.env` 文件中的数据库相关配置项是正确的。请确保以下项已正确配置:
```
DB_HOST=your_database_host
DB_PORT=your_database_port
DB_DATABASE=your_database_name
DB_USERNAME=your_username
DB_PASSWORD=your_password
```
- `your_database_host`:数据库主机地址。
- `your_database_port`:数据库端口号。
- `your_database_name`:要连接的数据库名称。
- `your_username`:连接数据库所需的用户名。
- `your_password`:连接数据库所需的密码。
2. 确保你的数据库服务器已经启动,并且可以从你的应用程序所在的服务器上访问。可以尝试用其他工具(如phpMyAdmin)来连接和验证数据库连接参数是否正确。
3. 如果你使用的是共享主机,确保你使用的数据库主机地址和端口号是正确的。你可能需要联系你的托管提供商以获取正确的数据库连接信息。
4. 确保你的数据库用户具有足够的权限来创建和操作表。可以尝试使用命令行或其他数据库管理工具来验证该用户是否具有所需权限。
5. 如果你正在使用Laravel Valet或Homestead等开发环境,请确保这些环境已正确配置,并且与你的项目相匹配。有时,你可能需要重新启动这些环境以使配置生效。
如果你仍然无法解决该问题,请提供更多关于你的环境和配置的详细信息,以便我可以提供更具体的帮助。