Cómo encontrar el directorio de datos mysql desde la línea de comandos en windows

186

En linux pude encontrar el directorio de instalación de mysql con el comando which mysql. Pero no pude encontrar ninguno en Windows. Lo intenté echo %path%y resultó en muchos caminos junto con el camino a mysql bin.

Quería encontrar el directorio de datos mysql desde la línea de comandos en Windows para usar en el programa por lotes. También me gustaría encontrar el directorio de datos mysql desde la línea de comandos de Linux. ¿Es posible? o como podemos hacer eso?

En mi caso, el directorio de datos mysql está en la carpeta de instalación, es decir ..MYSQL\mysql server 5\data, podría estar instalado en cualquier unidad. Quiero que me lo devuelvan desde la línea de comando.

Prabhu
fuente

Respuestas:

298

Puede emitir la siguiente consulta desde la línea de comandos:

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

Salida (en 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                       |
+---------------------------+----------------------------+

Salida (en 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/         |
+---------------------------+-----------------------------------------------------------+

O si solo quieres usar el directorio de datos:

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

Estos comandos también funcionan en Windows, pero debe invertir las comillas simples y dobles .

Por cierto, cuando ejecutas which mysqlen Linux como dijiste, no obtendrás el directorio de instalación en Linux. Solo obtendrá la ruta binaria, que está /usr/binen Linux, pero verá que la instalación de mysql está utilizando múltiples carpetas para almacenar archivos.


Si necesita el valor de datadir como salida, y solo eso, sin encabezados de columna, etc., pero no tiene un entorno GNU (awk | grep | sed ...), use la siguiente línea de comando:

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

El comando seleccionará el valor solo de la information_schemabase de datos interna de mysql y deshabilitará la salida tabular y los encabezados de columna.

Salida en Linux:

/var/lib/mysql
hek2mgl
fuente
Usé mysql -uroot -p -e 'SHOW VARIABLES WHERE Variable_Name = "datadir" | grep "datadir" | awk "{print $ 2}" 'para encontrar la ruta real de datadir en linux. ¿Cómo puede encontrar solo ese camino en Windows?
Prabhu
1
@Prabhu Puedes hacerlo solo con el mysqlcomando. No se requieren otras herramientas. Comprueba mi actualización
hek2mgl
El comando se ejecuta ok en linux. No se ejecuta bien en Windows XP. el primer comando da error: tiene un error en su sintaxis sql cerca de donde Variable_Name = 'dirname'. El segundo comando produce un error: información desconocida de la base de datos
esquema
1
Para que esto funcione en Windows, simplemente invierta las comillas dobles / simples:mysql -uUSER -p -e "SHOW VARIABLES WHERE Variable_Name LIKE '%dir'"
Leonardo Herrera
1
¡Gracias por esto! Ejecutando "SHOW VARIABLES WHERE Variable_Name =" datadir ""; en mi base de datos phpmyadmin me ayudó a encontrar la ubicación del directorio de la base de datos.
Aurgho Bhattacharjee
159

Puedes probar esto

mysql> select @@datadir;

PD: funciona en todas las plataformas.

Como_913
fuente
10
Funciona bien en OS X
Gilles De Mey
10
Funciona bien en Ubuntu.
jmunsch
77
Funciona bien en Win10
Hasan
3
Funciona en Server 2012 r2
SimonS
2
Funciona en RHEL 6
Alessandro Blasetti
5

si quieres encontrar datadir en linux o windows puedes hacer el siguiente comando

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

si está interesado en encontrar datadir, puede usar el comando grep & awk

mysql -uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name = "datadir"' | grep 'datadir' | awk '{print $2}'
Amrit Shrestha
fuente
1

Salida en Windows:
puede usar este comando, ¡es muy fácil!

1. sin contraseña de MySQL:

mysql ?

2. tener contraseña de MySQL:

mysql -uroot -ppassword mysql ?

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

xgqfrms
fuente
1

Puede ver la lista completa de opciones del servidor MySQL ejecutando

mysqld --verbose --help

Por ejemplo, para encontrar la ruta al directorio de datos en Linux, puede ejecutar:

mysqld --verbose --help | grep ^datadir

Salida de ejemplo:

datadir                                     /var/lib/mysql/
Eugene Yarmash
fuente
0
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();
GigolNet Guigolachvili
fuente
0

Compruebe si el Datadirectorio está en "C:\ProgramData\MySQL\MySQL Server 5.7\Data". Aquí es donde está en mi computadora. Alguien puede encontrar esto útil.

fondo azul
fuente
0

Utilice el siguiente comando desde la interfaz CLI

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