6.6.7 mysql_config_editor — Утилита конфигурации MySQL
Утилита mysql_config_editor позволяет хранить учетные данные авторизации в зашифрованном файле пути входа, названном .mylogin.cnf. Местоположение файла — каталог %APPDATA%\MySQL в Windows и домашний каталог текущего пользователя в системах, отличных от Windows. Позже файл может быть прочитан программами-клиентами MySQL для получения учетных данных авторизации для подключения к серверу MySQL.
Незашифрованный формат файла пути входа .mylogin.cnf состоит из групп параметров, аналогично другим файлам параметров. Каждая группа параметров в .mylogin.cnf называется «“путь входа,”» и разрешает только определённые параметры: host, user, password, port и socket. Представьте себе группу параметров пути входа как набор параметров, которые указывают, к какому серверу MySQL подключаться и под какой учётной записью авторизоваться. Вот пример незашифрованного файла:
[client]
user = mydefaultname
password = mydefaultpass
host = 127.0.0.1
[mypath]
user = myothername
password = myotherpass
host = localhost
При вызове программы-клиента для подключения к серверу клиент использует .mylogin.cnf совместно с другими файлами параметров. Его приоритет выше, чем у других файлов параметров, но ниже, чем у параметров, явно указанных в командной строке клиента. Сведения о порядке использования файлов параметров см. в Разделе 6.2.2.2, «Использование файлов параметров».
Для указания альтернативного имени файла пути входа установите переменную среды MYSQL_TEST_LOGIN_FILE. Эта переменная распознаётся утилитой mysql_config_editor, стандартными клиентами MySQL (mysql, mysqladmin и т. д.) и утилитой тестирования mysql-test-run.pl.
Программы используют группы в файле пути входа следующим образом:
Утилита mysql_config_editor по умолчанию работает с
clientпутём входа, если вы не указали параметр--login-path=, чтобы явно указать, какой путь входа использовать.name-
Без параметра
--login-pathпрограммы-клиенты считывают те же группы параметров из файла пути входа, что и из других файлов параметров. Рассмотрим следующую команду:mysql
По умолчанию клиент mysql читает группы
[client]и[mysql]из других файлов параметров, поэтому он также читает их из файла пути входа. -
С параметром
--login-pathпрограммы-клиенты дополнительно читают указанный путь входа из файла пути входа. Группы параметров, считанные из других файлов параметров, остаются теми же. Рассмотрим следующую команду:mysql --login-path=mypath
Клиент mysql считывает
[client]и[mysql]из других файлов параметров, а[client],[mysql]и[mypath]из файла пути входа. Программы-клиенты считывают файл пути входа даже при использовании параметра
--no-defaults, если не установлен параметр--no-login-paths. Это позволяет задавать пароли более безопасным способом, чем в командной строке, даже если присутствует параметр--no-defaults.
Утилита mysql_config_editor шифрует файл .mylogin.cnf, чтобы его нельзя было прочитать в виде открытого текста, и его содержимое, когда оно расшифровывается программами-клиентами, используется только в памяти. Таким образом, пароли могут храниться в файле в нетекстовом формате и использоваться позже без необходимости отображения их в командной строке или переменной среды. Утилита mysql_config_editor предоставляет команду print для отображения содержимого файла пути входа, но даже в этом случае значения паролей маскируются, чтобы они не отображались другим пользователям.
Шифрование, используемое утилитой mysql_config_editor, предотвращает отображение паролей в файле .mylogin.cnf в виде открытого текста и обеспечивает определённую безопасность, предотвращая случайное раскрытие паролей. Например, если вы отобразите обычный незашифрованный файл параметров my.cnf на экране, любые содержащиеся в нём пароли будут видны всем. С утилитой .mylogin.cnf это не так, но используемое шифрование вряд ли удержит решительного злоумышленника, и не следует считать его абсолютно надёжным. Пользователь, получивший права администратора системы на вашем компьютере, чтобы получить доступ к вашим файлам, мог бы расшифровать файл .mylogin.cnf приложить некоторые усилия.
Файл пути входа должен быть доступен для чтения и записи текущему пользователю и недоступен для других пользователей. В противном случае утилита mysql_config_editor игнорирует его, и программы-клиенты тоже не используют его.
Вызовите mysql_config_editor так:
mysql_config_editor [program_options] command [command_options]
Если файл пути входа не существует, утилита mysql_config_editor создаёт его.
Аргументы команды задаются следующим образом:
program_optionsсостоит из общих параметров mysql_config_editor.commandуказывает действие, которое нужно выполнить с файлом пути входа.mylogin.cnf. Например,setзаписывает путь входа в файл,removeудаляет путь входа, аprintотображает содержимое пути входа.command_optionsуказывает любые дополнительные параметры, специфичные для команды, такие как имя пути входа и значения, которые нужно использовать в пути входа.
Позиция имени команды в наборе аргументов программы имеет значение. Например, эти командные строки имеют одинаковые аргументы, но приводят к разным результатам:
mysql_config_editor --help set
mysql_config_editor set --help
В первой командной строке отображается сообщение справки по утилите mysql_config_editor и аргумент set игнорируется. Во второй командной строке отображается сообщение справки, специфичное для команды set.
Предположим, что вы хотите создать путь входа client, который определяет параметры вашего подключения по умолчанию, и дополнительный путь входа под названием remote для подключения к серверу MySQL на хосте remote.example.com. Вы хотите войти в систему следующим образом:
По умолчанию, на локальный сервер с именем пользователя и паролем
localuserиlocalpassНа удалённый сервер с именем пользователя и паролем
remoteuserиremotepass
Для настройки путей входа в файле .mylogin.cnf используйте следующие команды set. Введите каждую команду в отдельной строке и введите соответствующие пароли, когда вас попросят:
$> mysql_config_editor set --login-path=client
--host=localhost --user=localuser --password
Enter password: enter password "localpass" here
$> mysql_config_editor set --login-path=remote
--host=remote.example.com --user=remoteuser --password
Enter password: enter password "remotepass" here
Утилита mysql_config_editor по умолчанию использует путь входа client, поэтому параметр --login-path=client можно опустить из первой команды, не изменяя её действие.
Чтобы увидеть, что утилита mysql_config_editor записывает в файл .mylogin.cnf, используйте команду print:
$> mysql_config_editor print --all
[client]
user = localuser
password = *****
host = localhost
[remote]
user = remoteuser
password = *****
host = remote.example.com
Команда print отображает каждый путь входа как набор строк, начинающихся с заголовка группы, указывающего имя пути входа в квадратных скобках, за которым следуют значения параметров для пути входа. Значения паролей маскируются и не отображаются в виде открытого текста.
Если вы не укажете --all для отображения всех путей входа или --login-path= для отображения заданного пути входа, команда nameprint по умолчанию отображает путь входа client, если таковой существует.
Как показано в предыдущем примере, файл пути входа в систему может содержать несколько путей входа в систему. Таким образом, mysql_config_editor упрощает настройку нескольких «“персональностей“» для подключения к различным серверам MySQL или для подключения к данному серверу с использованием различных учетных записей. Любую из них можно выбрать по имени позже с помощью параметра --login-path при вызове программы-клиента. Например, для подключения к удаленному серверу используйте следующую команду:
mysql --login-path=remote
Здесь, mysql считывает группы параметров [client] и [mysql] из других файлов параметров, а группы параметров [client], [mysql] и [remote] — из файла пути входа в систему.
Для подключения к локальному серверу используйте следующую команду:
mysql --login-path=client
Поскольку mysql по умолчанию считывает пути входа в систему client и mysql, параметр --login-path в данном случае ничего не добавляет. Эта команда эквивалентна следующей:
mysql
Параметры, считанные из файла пути входа в систему, имеют приоритет над параметрами, считанными из других файлов параметров. Параметры, считанные из групп пути входа в систему, которые появляются позже в файле пути входа в систему, имеют приоритет над параметрами, считанными из групп, которые появляются раньше в файле.
mysql_config_editor добавляет пути входа в систему в файл пути входа в систему в порядке их создания, поэтому вы должны создавать более общие пути входа в систему раньше, а более специфические — позже. Если вам нужно переместить путь входа в систему в файле, вы можете удалить его, а затем воссоздать, чтобы добавить его в конец. Например, путь входа в систему client является более общим, поскольку его считывают все программы-клиенты, в то время как путь входа в систему mysqldump считывается только mysqldump. Параметры, указанные позже, переопределяют параметры, указанные ранее, поэтому расположение путей входа в систему в порядке client, mysqldump позволяет параметрам, специфичным для mysqldump, переопределять параметры client.
При использовании команды set с mysql_config_editor для создания пути входа в систему вам не нужно указывать все возможные значения параметров (имя хоста, имя пользователя, пароль, порт, сокет). В путь записываются только те значения, которые заданы. Любые отсутствующие значения, которые потребуются позже, можно указать при вызове пути клиента для подключения к серверу MySQL, либо в других файлах параметров, либо в командной строке. Любые параметры, указанные в командной строке, переопределяют параметры, указанные в файле пути входа в систему или других файлах параметров. Например, если учетные данные в пути входа в систему remote также применяются для хоста remote2.example.com, подключитесь к серверу на этом хосте следующим образом:
mysql --login-path=remote --host=remote2.example.com
Общие параметры mysql_config_editor
mysql_config_editor поддерживает следующие общие параметры, которые можно использовать перед любым именем команды в командной строке. Описание параметров конкретной команды см. в разделе mysql_config_editor Команды и параметры, специфичные для команды.
Таблица 6.18 Общие параметры mysql_config_editor
-
--help,-?Формат командной строки --helpВывод общего сообщения справки и завершение.
Чтобы увидеть сообщение справки по конкретной команде, вызовите mysql_config_editor следующим образом, где
command— это команда, отличная отhelp:mysql_config_editor
command--help -
--debug[=,debug_options]-#debug_optionsФормат командной строки --debug[=debug_options]Тип Строка Значение по умолчанию d:t:oЗапись отладочного журнала. Типичная строка
debug_options— этоd:t:o,. По умолчанию —file_named:t:o,/tmp/mysql_config_editor.trace.Этот параметр доступен только в том случае, если MySQL был скомпилирован с использованием
WITH_DEBUG. Выпускаемые компанией Oracle двоичные файлы MySQL не скомпилированы с использованием этого параметра. -
--verbose,-vФормат командной строки --verboseРежим подробного вывода. Вывод дополнительной информации о действиях программы. Этот параметр может быть полезен для диагностики проблем, если операция не выполняется так, как ожидалось.
-
--version,-VФормат командной строки --versionВывод информации о версии и завершение.
Команды mysql_config_editor и параметры, специфичные для команды
В этом разделе описаны разрешенные команды mysql_config_editor и для каждой из них — параметры, специфичные для команды, разрешенные после имени команды в командной строке.
Кроме того, mysql_config_editor поддерживает общие параметры, которые можно использовать перед любой командой. Описание этих параметров см. в разделе Общие параметры mysql_config_editor.
mysql_config_editor поддерживает следующие команды:
-
helpОтобразить общее сообщение справки и выйти. Данная команда не принимает дополнительных параметров.
Чтобы отобразить сообщение справки для определённой команды, вызовите mysql_config_editor следующим образом, где
command— это команда, отличная отhelp:mysql_config_editor
command--help -
print [options]Вывести содержимое файла пути входа в нешифрованном виде, за исключением паролей, которые отображаются как
*****.Имя файла пути входа по умолчанию —
client, если путь входа не указан. Если заданы оба--allи--login-path, приоритет имеет--all.Команда
printдопускает следующие параметры после имени команды:-
--help,-?Отобразить сообщение справки для команды
printи выйти.Чтобы отобразить общее сообщение справки, используйте mysql_config_editor --help.
-
--allВывести содержимое всех путей входа из файла пути входа.
-
--login-path=,name-GnameВывести содержимое указанного пути входа.
-
-
remove [options]Удалить путь входа из файла пути входа или изменить путь входа, удалив из него параметры.
Данная команда удаляет из пути входа только те параметры, которые указаны с помощью параметров
--host,--password,--port,--socketи--user. Если ни один из этих параметров не задан,removeудаляет весь путь входа. Например, данная команда удаляет только параметрuserиз пути входаmypath, а не весь путь входаmypath:mysql_config_editor remove --login-path=mypath --user
Данная команда удаляет весь путь входа
mypath:mysql_config_editor remove --login-path=mypath
Команда
removeдопускает следующие параметры после имени команды:-
--help,-?Отобразить сообщение справки для команды
removeи выйти.Чтобы отобразить общее сообщение справки, используйте mysql_config_editor --help.
-
--host,-hУдалить имя хоста из пути входа.
-
--login-path=,name-GnameПуть входа для удаления или изменения. Имя пути входа по умолчанию —
client, если этот параметр не задан. -
--password,-pУдалить пароль из пути входа.
-
--port,-PУдалить номер порта TCP/IP из пути входа.
-
--socket,-SУдалить имя файла сокета Unix из пути входа.
-
--user,-uУдалить имя пользователя из пути входа.
-
--warn,-wВывести предупреждение и запросить подтверждение пользователя, если команда пытается удалить путь входа по умолчанию (
client) и--login-path=clientне был указан. Этот параметр включён по умолчанию; используйте--skip-warnдля его отключения.
-
-
reset [options]Очистить содержимое файла пути входа.
Команда
resetдопускает следующие параметры после имени команды:-
--help,-?Отобразить сообщение справки для команды
resetи выйти.Чтобы отобразить общее сообщение справки, используйте mysql_config_editor --help.
-
-
set [options]Записать путь входа в файл пути входа.
Данная команда записывает в путь входа только те параметры, которые указаны с помощью параметров
--host,--password,--port,--socketи--user. Если ни один из этих параметров не задан, mysql_config_editor записывает путь входа как пустую группу.Команда
setдопускает следующие параметры после имени команды:-
--help,-?Отобразить сообщение справки для команды
setи выйти.Чтобы отобразить общее сообщение справки, используйте mysql_config_editor --help.
-
--host=,host_name-hhost_nameИмя хоста для записи в путь входа.
-
--login-path=,name-GnameПуть входа для создания. Имя пути входа по умолчанию —
client, если этот параметр не задан. -
--password,-pЗапросить пароль для записи в путь входа. После того, как mysql_config_editor отобразит запрос, введите пароль и нажмите Enter. Чтобы предотвратить отображение пароля другим пользователям, mysql_config_editor не отображает его.
Для указания пустого пароля нажмите Enter в запросе пароля. Результирующий путь входа, записанный в файл пути входа, включает строку такого вида:
password =
-
--port=,port_num-Pport_numНомер порта TCP/IP для записи в путь входа.
-
--socket=,file_name-Sfile_nameИмя файла сокета Unix для записи в путь входа.
-
--user=,user_name-uuser_nameИмя пользователя для записи в путь входа.
-
--warn,-wВывести предупреждение и запросить подтверждение пользователя, если команда пытается перезаписать существующий путь входа. Этот параметр включен по умолчанию; используйте
--skip-warnдля его отключения.
-
© 2025 Oracle
Licensed under the GPLv2 License.