如何在windows的命令行中找到mysql数据目录

Posted

技术标签:

【中文标题】如何在windows的命令行中找到mysql数据目录【英文标题】:How to find the mysql data directory from command line in windows 【发布时间】:2013-07-31 20:31:12 【问题描述】:

在 linux 中,我可以使用命令which mysql 找到 mysql 安装目录。但我在windows中找不到任何东西。我尝试了echo %path%,它产生了许多路径以及 mysql bin 的路径。

我想从 windows 的命令行中找到 mysql 数据目录,以便在批处理程序中使用。我还想从 linux 命令行中找到 mysql 数据目录。可能吗?或者我们该怎么做?

在我的情况下,mysql 数据目录位于安装文件夹中,即..MYSQL\mysql server 5\data 但是它可能安装在任何驱动器上。我想从命令行返回它。

【问题讨论】:

【参考方案1】:

您可以从命令行发出以下查询:

mysql -uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name LIKE "%dir"'

输出(在 Linux 上):

+---------------------------+----------------------------+
| Variable_name             | Value                      |
+---------------------------+----------------------------+
| basedir                   | /usr                       |
| character_sets_dir        | /usr/share/mysql/charsets/ |
| datadir                   | /var/lib/mysql/            |
| innodb_data_home_dir      |                            |
| innodb_log_group_home_dir | ./                         |
| lc_messages_dir           | /usr/share/mysql/          |
| plugin_dir                | /usr/lib/mysql/plugin/     |
| slave_load_tmpdir         | /tmp                       |
| tmpdir                    | /tmp                       |
+---------------------------+----------------------------+

输出(在 macOS Sierra 上):

+---------------------------+-----------------------------------------------------------+
| Variable_name             | Value                                                     |
+---------------------------+-----------------------------------------------------------+
| basedir                   | /usr/local/mysql-5.7.17-macos10.12-x86_64/                |
| character_sets_dir        | /usr/local/mysql-5.7.17-macos10.12-x86_64/share/charsets/ |
| datadir                   | /usr/local/mysql/data/                                    |
| innodb_data_home_dir      |                                                           |
| innodb_log_group_home_dir | ./                                                        |
| innodb_tmpdir             |                                                           |
| lc_messages_dir           | /usr/local/mysql-5.7.17-macos10.12-x86_64/share/          |
| plugin_dir                | /usr/local/mysql/lib/plugin/                              |
| slave_load_tmpdir         | /var/folders/zz/zyxvpxvq6csfxvn_n000009800002_/T/         |
| tmpdir                    | /var/folders/zz/zyxvpxvq6csfxvn_n000009800002_/T/         |
+---------------------------+-----------------------------------------------------------+

或者如果你只想要数据目录使用:

mysql -uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name = "datadir"'

这些命令也适用于 Windows,但您需要反转单引号和双引号

顺便说一句,当你在 Linux 中执行 which mysql 时,你不会在 Linux 上获得 installation 目录。您只会获得二进制路径,在 Linux 上为 /usr/bin,但您会看到 mysql 安装使用多个文件夹来存储文件。


如果您需要 datadir 的值作为输出,并且仅此,没有列标题等,但您没有 GNU 环境 (awk|grep|sed ...),请使用以下命令行:

mysql -s -N -uUSER -p information_schema -e 'SELECT Variable_Value FROM GLOBAL_VARIABLES WHERE Variable_Name = "datadir"'

该命令将仅从 mysql 的内部 information_schema 数据库中选择值,并禁用表格输出和列标题。

Linux 上的输出:

/var/lib/mysql

【讨论】:

我使用了 mysql -uroot -p -e 'SHOW VARIABLES WHERE Variable_Name = "datadir" | grep "数据目录" | awk "print $2"' 用于在 linux 中查找实际的 datadir 路径。如何在 windows 中只找到该路径? @Prabhu 您只需使用mysql 命令即可。不需要其他工具。检查我的更新 该命令在linux中执行正常。它在 windows xp 中不能很好地执行。第一个命令给出错误 - 您的 sql 语法在 Variable_Name = 'dirname' 附近有错误。第二个命令给出错误-未知数据库信息_schema 要在 Windows 下进行这项工作,只需反转双引号/单引号:mysql -uUSER -p -e "SHOW VARIABLES WHERE Variable_Name LIKE '%dir'" 谢谢!运行 "SHOW VARIABLES WHERE Variable_Name = "datadir"";在我的 phpmyadmin 数据库上帮助我找到了 dabase 目录的位置。【参考方案2】:

从 CLI 界面使用以下命令

[root@localhost~]# mysqladmin variables -p<password> | grep datadir

【讨论】:

【参考方案3】:

检查Data 目录是否在"C:\ProgramData\MySQL\MySQL Server 5.7\Data" 中。这是它在我电脑上的位置。有人可能会觉得这很有帮助。

【讨论】:

【参考方案4】:

你可以通过运行查看完整的 MySQL 服务器选项列表

mysqld --verbose --help

例如,要在 Linux 上找出data directory 的路径,您可以运行:

mysqld --verbose --help | grep ^datadir

示例输出:

datadir                                     /var/lib/mysql/

【讨论】:

有趣的是,这个命令在实际的datadir 之前给了我mysqld: Can't change dir to '/var/lib/mysql/' (Errcode: 13 - Permission denied) 我完全不知道为什么它会尝试更改工作目录。我检查了一下,当我使用mysqld --verbose --help 时,它会尝试这样做。可能会尝试做一些工作并需要转到数据目录无论如何快速解决方法是mysqld --verbose --help 2&gt;/dev/null | grep ^datadir【参考方案5】:

如果你想在 linux 或 windows 中查找 datadir,你可以执行以下命令

mysql -uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name = "datadir"'

如果您有兴趣查找 datadir,可以使用 grep & awk 命令

mysql -uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name = "datadir"' | grep 'datadir' | awk 'print $2'

【讨论】:

【参考方案6】:

Windows 上的输出: 你可以使用这个命令,非常简单!

1. MySQL没有密码:

mysql ?

2。有 MySQL 的密码:

mysql -uroot -ppassword mysql ?

【讨论】:

【参考方案7】:
public function variables($variable="")

  return empty($variable) ? mysql_query("SHOW VARIABLES") : mysql_query("SELECT @@$variable");


/*get datadir*/
$res = variables("datadir");

/*or get all variables*/
$res = variables();

【讨论】:

【参考方案8】:

你可以试试这个-

mysql> select @@datadir;

PS- 它适用于所有平台。

【讨论】:

在 Ubuntu 上运行良好。 适用于 Server 2012 r2 适用于 RHEL 6 适用于 CentOS 7 在 Windows 上工作

以上是关于如何在windows的命令行中找到mysql数据目录的主要内容,如果未能解决你的问题,请参考以下文章

mysql中如何在命令行中,执行一个SQL脚本文件?

如何找出PHP配置文件php.ini的路径

mysql 的入门操作

如何在 MySQL 的命令行中显示变量的值?

如何查看mysql版本

Mysql5.6.16安装