【问题标题】:how to find securely all mysql databases on a linux server如何在 linux 服务器上安全地查找所有 mysql 数据库
【发布时间】:2018-10-06 13:04:30
【问题描述】:

帖子的标题几乎说明了一切:

如何获取 linux 服务器上所有 mysql 数据库的列表?

我在某处读到,mysql 用户在可用数据库列表中的视图可能会受到限制。

但我需要安装在特定 linux 服务器(本例中为 OpenSuse 13.1)上的所有 mysql 数据库的完整列表。

【问题讨论】:

  • “mysql 用户拥有的视图可能会受到限制” - 这就是您作为管理员执行此操作的原因。虽然您所说的“完整列表”是什么意思?是否可以在具有自己的数据库的同一台服务器上运行其他 MySQL 实例?您是否也对该主机上运行的其他非 MySQL 数据库服务器感兴趣?你到底想完成什么,为什么?

标签: mysql linux


【解决方案1】:

您需要使用SHOW DATABASES

SHOW {DATABASES | SCHEMAS}
    [LIKE 'pattern' | WHERE expr]

SHOW DATABASES 列出 MySQL 服务器主机上的数据库。节目 SCHEMAS 是 SHOW DATABASES 的同义词。 LIKE 子句,如果存在, 指示要匹配的数据库名称。可以给出 WHERE 子句 使用更一般的条件选择行

但是,您只能看到您拥有某种特权的那些数据库,除非您拥有全局 SHOW DATABASES 特权。


另一种选择是使用mysqlshow 客户端。

mysqlshow客户端可以用来快速查看哪些数据库 存在、它们的表或表的列或索引。

【讨论】:

  • 谢谢。如何确定相关用户(在这种情况下不是 root)是否具有全局 SHOW DATABASES 权限?
  • @wobits 尝试运行该命令。你会得到你的答案:-)
【解决方案2】:

您通过执行列出所有数据库:

mysql -u<username> -p<password> -e"SHOW DATABASES"

如果您无权访问 mysql 服务器,您还可以通过检查 /var/lib/mysql 文件夹来检查哪些数据库存在,该文件夹将为每个数据库包含一个单独的文件夹:

ls -l /var/lib/mysql

total 28692
-rw-r--r-- 1 mysql mysql        0 May 24  2017 debian-5.5.flag
-rw-rw---- 1 mysql mysql  5242880 Oct  6 16:50 ib_logfile0
-rw-rw---- 1 mysql mysql  5242880 Jul 10  2015 ib_logfile1
-rw-rw---- 1 mysql mysql 18874368 Jan 17  2018 ibdata1
drwx------ 2 mysql mysql     4096 May 24  2017 mysql
-rw-rw---- 1 mysql mysql        6 May 24  2017 mysql_upgrade_info
drwx------ 2 mysql mysql     4096 May 24  2017 performance_schema
drwx------ 2 mysql mysql     4096 Jul 10  2015 scotchbox
drwx------ 2 mysql mysql     4096 Jan 17  2018 wp

正如您在上面的输出中看到的,有 4 个数据库:mysqlperformance_schemascotchboxwp

【讨论】:

  • 那么,我认为用户“root”通常有足够的权限来显示所有现有的数据库吗?
  • @wobits - 这只是连接到 mysql 服务器的示例用户名。
猜你喜欢
  • 2019-10-16
  • 2010-12-08
  • 1970-01-01
  • 1970-01-01
  • 2012-01-16
  • 1970-01-01
  • 1970-01-01
  • 2011-10-26
  • 1970-01-01
相关资源
最近更新 更多