SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 31.03.2010 20:47:23

товарищ Емский
Участник
Зарегистрирован: 31.03.2010
Сообщений: 10

КАк перенаправить данные из консоли в файл?

ТО есть что-то типа такого чтобы было

mysql> show databases> file.txt;

Я бы сам нашёл (через help), но я английский не очень хорошо знаю, ничё похожего на movie (перемещение) в консоли не вижу.

Извините если что не так и спасибо заранее.

Неактивен

 

#2 31.03.2010 21:06:19

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: КАк перенаправить данные из консоли в файл?

Из командной строки ОС нужно дать такую команду:

mysql -u пользователь -pпароль -e "SHOW DATABASES" > file.txt

Не забудьте также указать базу данных, если это нужно.

Неактивен

 

#3 31.03.2010 21:39:36

товарищ Емский
Участник
Зарегистрирован: 31.03.2010
Сообщений: 10

Re: КАк перенаправить данные из консоли в файл?

Спасибо, выводится всё, но я вынужден переспросить. Я имел ввиду, вот такой вывод (в файл, естественно)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| phpmyadmin         |
+--------------------+
3 rows in set (0.02 sec)


...Так, а сейчас по способу, указаному Вами, в файл выводятся ключи и прочее. Я растерян- команда одна, а выводы разные в обоих случаях. Как так? Непонятно. Получается, один из выводов неправильный что ли? 

SHOW DATABASES lists the databases on the MySQL server host. SHOW
SCHEMAS is a synonym for SHOW DATABASES as of MySQL 5.0.2.

По идее, он и должен выводить ключи, а чё же он тогда мне таблицу такую выводит?

Неактивен

 

#4 31.03.2010 21:50:47

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: КАк перенаправить данные из консоли в файл?

Я Вас не совсем понял. Что значит "должен выводить ключи"?
Про какие ключи Вы говорите?

Файл должен получаться вот такого содержания:

Database
information_schema
mysql
phpmyadmin

Неактивен

 

#5 31.03.2010 21:55:55

товарищ Емский
Участник
Зарегистрирован: 31.03.2010
Сообщений: 10

Re: КАк перенаправить данные из консоли в файл?

E:\vso_moio>mysql -u root -p  YES SHOW DATABASES > file.txt

Даёт файл такого содержания.Тут и ключи и всё на свете

James написал:

mysql  Ver 14.14 Distrib 5.1.40, for Win32 (ia32)
Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license
Usage: mysql [OPTIONS] [database]
  -?, --help          Display this help and exit.
  -I, --help          Synonym for -?
  --auto-rehash       Enable automatic rehashing. One doesn't need to use
                      'rehash' to get table and field completion, but startup
                      and reconnecting may take a longer time. Disable with
                      --disable-auto-rehash.
  -A, --no-auto-rehash
                      No automatic rehashing. One has to use 'rehash' to get
                      table and field completion. This gives a quicker start of
                      mysql and disables rehashing on reconnect. WARNING:
                      options deprecated; use --disable-auto-rehash instead.
  -B, --batch         Don't use history file. Disable interactive behavior.
                      (Enables --silent)
  --character-sets-dir=name
                      Directory where character sets are.
  --column-type-info  Display column type information.
  -c, --comments      Preserve comments. Send comments to the server. The
                      default is --skip-comments (discard comments), enable
                      with --comments
  -C, --compress      Use compression in server/client protocol.
  -#, --debug[=#]     This is a non-debug version. Catch this and exit
  --debug-check       Check memory and open file usage at exit.
  -T, --debug-info    Print some debug info at exit.
  -D, --database=name Database to use.
  --default-character-set=name
                      Set the default character set.
  --delimiter=name    Delimiter to be used.
  -e, --execute=name  Execute command and quit. (Disables --force and history
                      file)
  -E, --vertical      Print the output of a query (rows) vertically.
  -f, --force         Continue even if we get an sql error.
  -G, --named-commands
                      Enable named commands. Named commands mean this program's
                      internal commands; see mysql> help . When enabled, the
                      named commands can be used from any line of the query,
                      otherwise only from the first line, before an enter.
                      Disable with --disable-named-commands. This option is
                      disabled by default.
  -g, --no-named-commands
                      Named commands are disabled. Use \* form only, or use
                      named commands only in the beginning of a line ending
                      with a semicolon (wink Since version 10.9 the client now
                      starts with this option ENABLED by default! Disable with
                      '-G'. Long format commands still work from the first
                      line. WARNING: option deprecated; use
                      --disable-named-commands instead.
  -i, --ignore-spaces Ignore space after function names.
  --local-infile      Enable/disable LOAD DATA LOCAL INFILE.
  -b, --no-beep       Turn off beep on error.
  -h, --host=name     Connect to host.
  -H, --html          Produce HTML output.
  -X, --xml           Produce XML output
  --line-numbers      Write line numbers for errors.
  -L, --skip-line-numbers
                      Don't write line number for errors. WARNING: -L is
                      deprecated, use long version of this option instead.
  -n, --unbuffered    Flush buffer after each query.
  --column-names      Write column names in results.
  -N, --skip-column-names
                      Don't write column names in results. WARNING: -N is
                      deprecated, use long version of this options instead.
  -O, --set-variable=name
                      Change the value of a variable. Please note that this
                      option is deprecated; you can set variables directly with
                      --variable-name=value.
  --sigint-ignore     Ignore SIGINT (CTRL-C)
  -o, --one-database  Only update the default database. This is useful for
                      skipping updates to other database in the update log.
  -p, --password[=name]
                      Password to use when connecting to server. If password is
                      not given it's asked from the tty.
  -W, --pipe          Use named pipes to connect to server.
  -P, --port=#        Port number to use for connection or 0 for default to, in
                      order of preference, my.cnf, $MYSQL_TCP_PORT,
                      /etc/services, built-in default (3306).
  --prompt=name       Set the mysql prompt to this value.
  --protocol=name     The protocol of connection (tcp,socket,pipe,memory).
  -q, --quick         Don't cache result, print it row by row. This may slow
                      down the server if the output is suspended. Doesn't use
                      history file.
  -r, --raw           Write fields without conversion. Used with --batch.
  --reconnect         Reconnect if the connection is lost. Disable with
                      --disable-reconnect. This option is enabled by default.
  -s, --silent        Be more silent. Print results with a tab as separator,
                      each row on new line.
  --shared-memory-base-name=name
                      Base name of shared memory.
  -S, --socket=name   Socket file to use for connection.
  --ssl               Enable SSL for connection (automatically enabled with
                      other flags). Disable with --skip-ssl.
  --ssl-ca=name       CA file in PEM format (check OpenSSL docs, implies
                      --ssl).
  --ssl-capath=name   CA directory (check OpenSSL docs, implies --ssl).
  --ssl-cert=name     X509 cert in PEM format (implies --ssl).
  --ssl-cipher=name   SSL cipher to use (implies --ssl).
  --ssl-key=name      X509 key in PEM format (implies --ssl).
  --ssl-verify-server-cert
                      Verify server's "Common Name" in its cert against
                      hostname used when connecting. This option is disabled by
                      default.
  -t, --table         Output in table format.
  --tee=name          Append everything into outfile. See interactive help (\h)
                      also. Does not work in batch mode. Disable with
                      --disable-tee. This option is disabled by default.
  --no-tee            Disable outfile. See interactive help (\h) also. WARNING:
                      option deprecated; use --disable-tee instead
  -u, --user=name     User for login if not current user.
  -U, --safe-updates  Only allow UPDATE and DELETE that uses keys.
  -U, --i-am-a-dummy  Synonym for option --safe-updates, -U.
  -v, --verbose       Write more. (-v -v -v gives the table output format).
  -V, --version       Output version information and exit.
  -w, --wait          Wait and retry if connection is down.
  --connect_timeout=# Number of seconds before connection timeout.
  --max_allowed_packet=#
                      Max packet length to send to, or receive from server
  --net_buffer_length=#
                      Buffer for TCP/IP and socket communication
  --select_limit=#    Automatic limit for SELECT when using --safe-updates
  --max_join_size=#   Automatic limit for rows in a join when using
                      --safe-updates
  --secure-auth       Refuse client connecting to server if it uses old
                      (pre-4.1.1) protocol
  --server-arg=name   Send embedded server this as a parameter.
  --show-warnings     Show warnings after every statement.

Default options are read from the following files in the given order:
C:\WINDOWS\my.ini C:\WINDOWS\my.cnf C:\my.ini C:\my.cnf C:\WebServers\usr\local\mysql-5.1\my.ini C:\WebServers\usr\local\mysql-5.1\my.cnf
The following groups are read: mysql client
The following options may be given as the first argument:
--print-defaults    Print the program argument list and exit
--no-defaults        Don't read default options from any options file
--defaults-file=#    Only read default options from the given file #
--defaults-extra-file=# Read this file after the global files are read

Variables (--variable-name=value)
and boolean options {FALSE|TRUE}  Value (after reading options)
--------------------------------- -----------------------------
auto-rehash                       FALSE
character-sets-dir                /usr/local/mysql-5.1/share/charsets
column-type-info                  FALSE
comments                          FALSE
compress                          FALSE
debug-check                       FALSE
debug-info                        FALSE
database                          (No default value)
default-character-set             cp1251
delimiter                         ;
vertical                          FALSE
force                             FALSE
named-commands                    FALSE
ignore-spaces                     FALSE
local-infile                      FALSE
no-beep                           FALSE
host                              (No default value)
html                              FALSE
xml                               FALSE
line-numbers                      TRUE
unbuffered                        FALSE
column-names                      TRUE
sigint-ignore                     FALSE
port                              3306
prompt                            mysql>
quick                             FALSE
raw                               FALSE
reconnect                         FALSE
shared-memory-base-name           (No default value)
socket                            /tmp/mysql5.sock
ssl                               FALSE
ssl-ca                            (No default value)
ssl-capath                        (No default value)
ssl-cert                          (No default value)
ssl-cipher                        (No default value)
ssl-key                           (No default value)
ssl-verify-server-cert            FALSE
table                             FALSE
user                              root
safe-updates                      FALSE
i-am-a-dummy                      FALSE
connect_timeout                   0
max_allowed_packet                16777216
net_buffer_length                 16384
select_limit                      1000
max_join_size                     1000000
secure-auth                       FALSE
show-warnings                     FALSE

Отредактированно товарищ Емский (31.03.2010 21:57:31)

Неактивен

 

#6 31.03.2010 21:59:04

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: КАк перенаправить данные из консоли в файл?

Нужно не YES SHOW DATABASES, а -e "SHOW DATABASES"

Неактивен

 

#7 31.03.2010 22:11:10

товарищ Емский
Участник
Зарегистрирован: 31.03.2010
Сообщений: 10

Re: КАк перенаправить данные из консоли в файл?

А он потом ещё потом пароль запрашивает Enter password, а пароль-то уменя пустой! (Жму на enter и в файл выводится таблица, как мы и хотели) Но я-то думал обойтись без ввода пароля, вот в чём дело.

Щас попытаюсь создать руту пароль и как-то так работать:
E:\vso_moio>mysql -u root -p пароль -e "SHOW DATABASES" > file.txt

Если не получится- придётся допольнительно вводить пароль. Жаль.
...В общем. надо так:
E:\vso_moio>mysql -u root -e "SHOW DATABASES" > file.txt

НО опять же, вопрос возникает: почему эта штука у меня не запрашивает пароль? Я свой для оси, но не для mysql! А она на до ж, безо всякого пароля выводит мне в файл базу данных

Хе, а если батничек написать, который выводил бы таблциу юзеров с паролями? Но это ладно, это вопрос не сегодняшнего дня. Спасибо, тему к закрытию можно.

Отредактированно товарищ Емский (31.03.2010 22:25:06)

Неактивен

 

#8 31.03.2010 22:40:04

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: КАк перенаправить данные из консоли в файл?

Пароль нужно после ключа -p без пробела: -pпароль, а не -p пароль.
Если хотите без пароля, тогда -p пароль можно совсем убрать.

почему эта штука у меня не запрашивает пароль? Я свой для оси, но не для mysql!

Потому что у вашего пользователя в MySQL нет пароля.

а если батничек написать, который выводил бы таблциу юзеров с паролями?

Если только их список с незашифрованными паролями где-то хранить и оттуда выводить. MySQL применяет для хранения паролей необратимое шифрование, максимум, что Вы получите - пароль в зашифрованной форме (которые, разумеется, скормить клиенту нельзя).

Неактивен

 

#9 31.03.2010 22:45:13

товарищ Емский
Участник
Зарегистрирован: 31.03.2010
Сообщений: 10

Re: КАк перенаправить данные из консоли в файл?

Ясно. Надо почитать про необратимое шифрование. Для себя хотя бы.

Отредактированно товарищ Емский (31.03.2010 22:46:54)

Неактивен

 

#10 31.03.2010 22:48:31

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: КАк перенаправить данные из консоли в файл?

Ну установите пароль для вашего пользователя в MySQL - и не будет выводить.

А если Вы беспокоитесь насчет того, что Вам в файл приходило (я имею в виду "mysql  Ver 14.14 Distrib 5.1.40, for Win32 (ia32) ..."), то Вы вглядитесь в это повнимательнее.
Это краткое описание ключей программы mysql - информация общедоступная (mysql, если видит неправильный ключ, показывает эту справочную информацию и завершает работу; соответственно, Вы сказали перенаправить в файл, поэтому файл и содержал её).

Неактивен

 

#11 31.03.2010 22:55:14

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: КАк перенаправить данные из консоли в файл?

Ясно. Надо почитать про необратимое шифрование. Для себя хотя бы.

А чё там читать... Ну хранятся в специальной базе под названием mysql пароли от пользователя в виде хэшей вида *2B4008693C6019E508538174461E05663F283D2E (вместо 'пароль'; причем слово 'пароль' из *2B4008693C6019E508538174461E05663F283D2E получить никак нельзя - только перебором).
База эта в явном виде по умолчанию доступна только root-пользователю MySQL.
Можно также прочитать напрямую и файлы базы. Однако к ним опять же доступ есть у пользователя ОС mysql (под которым, по идее, запрещено логиниться, так что не взломаешь) и у суперюзеров ОС, к которым доступ если взломали, то тут комментарии излишни.

Вот и всё, в общем-то; можно и не читать...

Неактивен

 

#12 31.03.2010 23:02:20

товарищ Емский
Участник
Зарегистрирован: 31.03.2010
Сообщений: 10

Неактивен

 

#13 31.03.2010 23:19:23

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: КАк перенаправить данные из консоли в файл?

Во-первых, Вы путаете поиск дубликатов и получение незашифрованного пароля и зашифрованного.
Поиск дубликатов - это когда Вы имеете слово 'собака' и хотите знать, какие другие строки (причем совершенно произвольной длины) будут иметь MD5-хэш, такой же, как и 'собака'.
Наличие дубликатов просто означает, что на каждые 10^N строк есть 10^M дубликатов. Т.е. всего ключей не бесконечное количество (как возможных строк), а 10^(N-M), где N-M конечно. Поэтому есть вероятность, равная 1/10^(N-M), что ваш пароль совпадет с какой-то другой строкой (неизвестно какой). Вероятность эта настолько ничтожна, что смело принимается равной нулю.
(я тут, возможно, по математике где-то ошибся, но сути дела это не меняет).

Но всё это никак не поможет для получения пароля из необратимого шифра (шифрование - это сложная специфичная математическая процедура, в структуре которой и заложена необратимость шифрования).
Максимум, что можно сделать - это, имея шифр (учтите, что его еще надо заполучить - тоже не так просто) перебирать все возможные слова и сравнивать их шифр с имеющимся. Обычно ограничиваются какой-то небольшой длиной (от 6 до 8 символов, как правило) слова, т.к. затраты на исследование всех возможных вариантов возрастают с увеличением длины как степенная функция (т.е. очень быстро).

Во-вторых, конкретно MD5() не используется в MySQL для шифрования паролей учетных записей, а используется собственная функция PASSWORD().

Неактивен

 

#14 01.04.2010 17:37:23

товарищ Емский
Участник
Зарегистрирован: 31.03.2010
Сообщений: 10

Re: КАк перенаправить данные из консоли в файл?

Очень интересно. Да, я не дал себе труда подумать- действительно, пароль не получить.

...НО коль скоро у нас зашла об этом речь, а тему прикрывать не спешат...

Во-первых
А и не нужно получать пароль, согласитесь?
То есть чтобы войти, скажем под каким-то пользователем, пароль этого пользователя получать необязательно.

Как ВЫ понимаете, ничё нового я не сказал. Умные дядьки ломают программы (не просты перебором, нет)- и вот уже на файлообменникакх появляются сломанные проги с генератором ключей, каждый из которых построен по определённым правилам (и прога проверяет наличие этих правил, (и их очень трудно найти, эти правила, безусловно) если они соблюдены, ключ подходит. Прога взломана, а в нашем случае чел зашёл под рутом или ещё кем.) Я сам один раз так крякнул простенькую прогу. Естественно, работаешь с отладчиком на уровне ассемблера, как без этого?

Думаю, вышесказанное можно применить и к паролям

Во-вторых, глубоко не копал, но...
MySQL насколько я понимаю, распространяется по лицензии GPL?
Берём исходные коды
Смотрим PASSWORD
НУ и всё, собсно. Изучаем, используем, правим...

Неактивен

 

#15 01.04.2010 19:59:54

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: КАк перенаправить данные из консоли в файл?

Я и так Вам расскажу, что PASSWORD == (SHA1(SHA1)). И что это Вам даст?

Неактивен

 

#16 01.04.2010 22:20:50

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: КАк перенаправить данные из консоли в файл?

тему прикрывать не спешат...

Темы у нас обычно не закрывают.

Умные дядьки ломают программы...

Вы опять же путаете случай программы, где ключ/пароль генерируется автоматически какому-то алгоритму и случай, когда пароль генерируется безо всяких правил из головы или как-то еще. Такой пароль можно совершенно произволен и в общем случае не подчиняется никаким правилам, поэтому его можно только украсть или подобрать.

Неактивен

 

#17 05.04.2010 17:37:45

товарищ Емский
Участник
Зарегистрирован: 31.03.2010
Сообщений: 10

Re: КАк перенаправить данные из консоли в файл?

Вижу непонимание.
Итак, имеем действительно случайным образом сделанный пароль: 542

Подумаем, как его зашифровать. Введём простое правило: зашфрованнывй пароль (читай: контрольная сумма) пусть будет числом- суммой всех цифр пароля. Тогда зашифрованный пароль есть 11 (5+4+2)

И вот он уже сгенерирован НЕСЛУЧАЙНЫМ ОБРАЗОМ.
Теперь имеем заштфрованный пароль (11), имеем правило, согласно которому он образуется (он есть сумма всех чисел пароля) и будем один за одним генерировать рабочие пароли

56, 74, 119 и так далее.

Так что, как видим, рабочий пароль (не оригинальный, но от этого менее рабочим не ставший) не подобран перебором, а именно найден.

Повторюсь, в чём главная проблема, (впрочем, решаемая, ибо умные дядьки всё-таки ломают программы.)
Нужно найти сгенерированный пароль и правила его создания. Отладчик в руки и вперёд. 

НУ, вот. А учитывая, что MySQL прога с открытым исходным кодом, узнать работу (те  самые пресловутые правила) password достаточно легко. Отнросительно чего я и выражаю своё недоумение второй раз.

Неактивен

 

#18 05.04.2010 18:06:02

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: КАк перенаправить данные из консоли в файл?

Нужно найти сгенерированный пароль и правила его создания.

Какие в общем случае правила создания пароля?

Вы снова путаете шифрование пароля и его генерацию по какому-то алгоритму. В MySQL (да и не только) нет никакой генерации. Пароль Вы выбираете произвольно. При соединении сервер принимает пароль и применяет к нему шифрование. Вот и всё.

Очевидно, что если Вы по каким-то причинам знаете пароль, сервер примет его в любом случае.

Неактивен

 

#19 05.04.2010 18:09:54

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: КАк перенаправить данные из консоли в файл?

Второй раз кликнул он рыбку.
Беспокойно синее море.
Приплыла к нему рыбка,
Молвит: SHA1, SHA1 сломайте.

Ну правда, для того, чтобы взломать SHA1 (зная сам хэш), Вам нужно
потратить или несколько лет на PC или ~недели на большом кластере,
который будет ломать Ваш пароль. Те люди, которым могут быть интересны
Ваши секреты, не обладают такой технической возможностью. Те, кото-
рые обладают, — им плевать на Ваши секреты. Тем более, что хэш никогда
не покидает хранилища БД.

А специальные коллизии в SHA1 еще никто не придумал, как сделать.
Впрочем, попробуйте wink

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson