5.4.54 mysql_options()
int
mysql_options(MYSQL *mysql,
enum mysql_option option,
const void *arg)
Описание
Может использоваться для установки дополнительных параметров подключения и влияния на поведение подключения. Эту функцию можно вызывать несколько раз для установки нескольких параметров. Для получения значений параметров используйте mysql_get_option().
Вызовите mysql_options() после mysql_init() и перед mysql_connect() или mysql_real_connect().
Аргумент option — это параметр, который вы хотите установить; аргумент arg — значение параметра. Если параметр является целым числом, укажите указатель на значение целого числа в качестве аргумента arg.
Параметры, такие как файлы сертификатов и ключей SSL, используются для установления зашифрованного соединения, если такие соединения доступны, но не налагают требования о том, что полученное соединение должно быть зашифрованным. Для требования зашифрованного соединения используйте метод, описанный в разделе 3.6.1 «Поддержка зашифрованных соединений».
В следующем списке описаны возможные параметры, их влияние и то, как используется arg для каждого параметра. Для описаний параметров, указывающих, что arg не используется, его значение не имеет значения; принято передавать 0.
-
MYSQL_DEFAULT_AUTH(тип аргумента:char *)Название плагина аутентификации для использования.
-
MYSQL_ENABLE_CLEARTEXT_PLUGIN(тип аргумента:bool *)Включить плагин аутентификации
mysql_clear_passwordс открытым текстом. См. . -
MYSQL_INIT_COMMAND(тип аргумента:char *)SQL-запрос для выполнения при подключении к серверу MySQL. Автоматически переисполняется при повторном подключении.
-
MYSQL_OPT_BIND(аргумент:char *)Сетевой интерфейс для подключения к серверу. Используется, когда у хоста клиента несколько сетевых интерфейсов. Аргумент — имя хоста или IP-адрес (указанный как строка).
-
MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS(тип аргумента:bool *)Указать, может ли клиент обрабатывать истекшие пароли. См. .
-
MYSQL_OPT_COMPRESS(аргумент: не используется)Сжать всю информацию, отправляемую между клиентом и сервером, если возможно. См. .
Начиная с MySQL 8.0.18,
MYSQL_OPT_COMPRESSстановится устаревшим параметром из-за введения параметраMYSQL_OPT_COMPRESSION_ALGORITHMSдля более тонкого контроля сжатия соединений (см. ). ЗначениеMYSQL_OPT_COMPRESSзависит от того, указан лиMYSQL_OPT_COMPRESSION_ALGORITHMS:Если
MYSQL_OPT_COMPRESSION_ALGORITHMSне указан, включениеMYSQL_OPT_COMPRESSэквивалентно указанию набора алгоритмов клиентаzlib,uncompressed.Если
MYSQL_OPT_COMPRESSION_ALGORITHMSуказан, включениеMYSQL_OPT_COMPRESSэквивалентно указанию набора алгоритмовzlib, а полный набор алгоритмов клиента является объединениемzlibи алгоритмов, указанных вMYSQL_OPT_COMPRESSION_ALGORITHMS. Например, при включенномMYSQL_OPT_COMPRESSи установкеMYSQL_OPT_COMPRESSION_ALGORITHMSв значениеzlib,zstd, разрешённый набор алгоритмов —zlibплюсzlib,zstd; то есть,zlib,zstd. При включенномMYSQL_OPT_COMPRESSи установкеMYSQL_OPT_COMPRESSION_ALGORITHMSв значениеzstd,uncompressed, разрешённый набор алгоритмов —zlibплюсzstd,uncompressed; то есть,zlib,zstd,uncompressed.
Начиная с MySQL 8.0.18,
MYSQL_OPT_COMPRESSустарел. Он может быть удалён в будущей версии MySQL. См. . -
MYSQL_OPT_COMPRESSION_ALGORITHMS(тип аргумента:const char *)Разрешённые алгоритмы сжатия для соединений с сервером. Доступные алгоритмы совпадают с системной переменной. Если этот параметр не указан, значение по умолчанию —
uncompressed.Для получения дополнительной информации см. .
Этот параметр добавлен в MySQL 8.0.18. Для асинхронных операций параметр не действует до MySQL 8.0.21.
-
MYSQL_OPT_CONNECT_ATTR_DELETE(тип аргумента:char *)При заданном имени ключа этот параметр удаляет пару ключ-значение из текущего набора атрибутов соединения, которые передаются серверу при подключении. Аргумент — указатель на строку с нулевым завершением, которая называет ключ. Сравнение имени ключа с существующими ключами регистрозависимое.
См. также описание параметра
MYSQL_OPT_CONNECT_ATTR_RESET, а также описание параметраMYSQL_OPT_CONNECT_ATTR_ADDв описании функцииmysql_options4(). В этом описании функции также приведён пример использования.Performance Schema предоставляет атрибуты соединения через таблицы и . См. .
-
MYSQL_OPT_CONNECT_ATTR_RESET(аргумент не используется)Этот параметр сбрасывает (очищает) текущий набор атрибутов соединения, которые передаются серверу при подключении.
См. также описание параметра
MYSQL_OPT_CONNECT_ATTR_DELETE, а также описание параметраMYSQL_OPT_CONNECT_ATTR_ADDв описании функцииmysql_options4(). В этом описании функции также приведён пример использования.Performance Schema предоставляет атрибуты соединения через таблицы и . См. .
-
MYSQL_OPT_CONNECT_TIMEOUT(тип аргумента:unsigned int *)Таймаут подключения в секундах.
-
MYSQL_OPT_GET_SERVER_PUBLIC_KEY(тип аргумента:bool *)Позволяет клиенту запросить у сервера открытый ключ, необходимый для обмена паролями на основе пар ключей RSA. Этот параметр относится к клиентам, которые аутентифицируются с помощью плагина аутентификации
caching_sha2_password. Для этого плагина сервер не отправляет открытый ключ, если его не запросили. Этот параметр игнорируется для учётных записей, которые не аутентифицируются с этим плагином. Он также игнорируется, если обмен паролями на основе RSA не используется, как в случае, когда клиент подключается к серверу по защищённому соединению.Если задан
MYSQL_SERVER_PUBLIC_KEYи указывает на допустимый файл открытого ключа, он имеет приоритет надMYSQL_OPT_GET_SERVER_PUBLIC_KEY.Сведения о плагине
caching_sha2_passwordсм. в . -
MYSQL_OPT_LOAD_DATA_LOCAL_DIR(тип аргумента:char *)Этот параметр влияет на возможность клиента
LOCALдля операций . Он указывает каталог, в котором должны находиться файлы, указанные в операциях . Влияние параметраMYSQL_OPT_LOAD_DATA_LOCAL_DIRзависит от включения или выключения загрузки данныхLOCAL:Если загрузка данных
LOCALвключена по умолчанию в библиотеке MySQL-клиента или явно включена с помощьюMYSQL_OPT_LOCAL_INFILE, параметрMYSQL_OPT_LOAD_DATA_LOCAL_DIRне оказывает никакого влияния.-
Если загрузка данных
LOCALвыключена по умолчанию в библиотеке MySQL-клиента или явно выключена с помощьюMYSQL_OPT_LOCAL_INFILE, параметрMYSQL_OPT_LOAD_DATA_LOCAL_DIRможет использоваться для обозначения разрешённого каталога для загружаемых локально файлов. В этом случае загрузка данныхLOCALразрешена, но ограничена файлами, расположенными в указанном каталоге. Интерпретация значенияMYSQL_OPT_LOAD_DATA_LOCAL_DIRследующая:Если значение равно указателю на null (значение по умолчанию), каталог не задан, и файлы не разрешены для загрузки данных
LOCAL.Если значение — путь к каталогу, загрузка данных
LOCALразрешена, но ограничена файлами, расположенными в указанном каталоге. Сравнение имени пути каталога и имени пути загружаемых файлов регистрозависимое независимо от регистрозависимости файловой системы.
Например, чтобы явно отключить загрузку локальных данных, кроме файлов, расположенных в каталоге
/my/local/data, вызовитеmysql_options()следующим образом:unsigned int i = 0; mysql_options(&mysql,MYSQL_OPT_LOCAL_INFILE,&i); mysql_options(&mysql,MYSQL_OPT_LOAD_DATA_LOCAL_DIR,"/my/local/data");
Параметр
MYSQL_OPT_LOAD_DATA_LOCAL_DIRможет быть установлен в любое время во время работы обработчика соединенияmysql. После установки значение применяется ко всем последующим операциям загрузкиLOCAL, пока значение не будет изменено.Параметр CMake управляет значением по умолчанию для загрузки локальных данных в библиотеке клиента (см. ).
Успешное выполнение операций загрузки
LOCALклиентом также требует, чтобы сервер разрешал локальную загрузку; см.Параметр
MYSQL_OPT_LOAD_DATA_LOCAL_DIRбыл добавлен в MySQL 8.0.21. -
MYSQL_OPT_LOCAL_INFILE(тип аргумента: необязательный указатель наunsigned int)Этот параметр влияет на возможность клиента
LOCALдля операций . По умолчанию возможностьLOCALопределяется значением по умолчанию, скомпилированным в библиотеку MySQL-клиента. Чтобы явно управлять этой возможностью, вызовитеmysql_options()для включения или выключения параметраMYSQL_OPT_LOCAL_INFILE:Для включения загрузки данных
LOCALустановите указатель наunsigned intс ненулевым значением или опустите аргумент указателя.Для выключения загрузки данных
LOCALустановите указатель наunsigned intс нулевым значением.
Если возможность
LOCALвыключена, параметрMYSQL_OPT_LOAD_DATA_LOCAL_DIRможет использоваться для разрешения ограниченной локальной загрузки файлов, расположенных в указанном каталоге.Параметр CMake управляет значением по умолчанию для загрузки локальных данных в библиотеке клиента (см. ).
Успешное выполнение операций загрузки
LOCALклиентом также требует, чтобы сервер разрешал локальную загрузку; см. -
MYSQL_OPT_MAX_ALLOWED_PACKET(аргумент:unsigned long *)Этот параметр устанавливает максимальный размер буфера для связи клиент/сервер со стороны клиента. Если аргумент
mysqlнеNULL, вызов устанавливает значение параметра для этой сессии. Еслиmysql—NULL, вызов устанавливает значение параметра глобально для всех последующих сессий, для которых не задано значение для конкретной сессии.Поскольку можно задать максимальный размер буфера для сессии или глобально, в зависимости от того, является ли аргумент
mysqlненулевым илиNULL,mysql_get_option()аналогично возвращает значение для сессии или глобальное значение в зависимости от его аргументаmysql. -
MYSQL_OPT_NAMED_PIPE(аргумент: не используется)Использовать именованную трубу для подключения к серверу MySQL на Windows, если сервер разрешает подключения по именованным трубам.
-
MYSQL_OPT_NET_BUFFER_LENGTH(аргумент:unsigned long *)Этот параметр устанавливает размер буфера клиента для TCP/IP и сокетного взаимодействия.
-
MYSQL_OPT_OPTIONAL_RESULTSET_METADATA(тип аргумента:bool *)Этот флаг делает метаданные набора результатов необязательными. Это альтернатива установке флага соединения
CLIENT_OPTIONAL_RESULTSET_METADATAдля функцииmysql_real_connect(). Подробности по управлению передачей метаданных набора результатов см. в разделе 3.6.7 «Необязательные метаданные набора результатов». -
MYSQL_OPT_PROTOCOL(тип аргумента:unsigned int *)Протокол транспорта для подключения. Укажите одно из значений перечисления
mysql_protocol_type, определённого вmysql.h. -
MYSQL_OPT_READ_TIMEOUT(тип аргумента:unsigned int *)Время ожидания в секундах для каждой попытки чтения со сервера. Если необходимо, выполняются повторные попытки, поэтому общее эффективное время ожидания в три раза превышает значение параметра. Можно установить значение так, чтобы потерянное подключение можно было обнаружить раньше, чем значение TCP/IP
Close_Wait_Timeout, равное 10 минутам. -
MYSQL_OPT_RECONNECT(тип аргумента:bool *)ПримечаниеПараметр
MYSQL_OPT_RECONNECTвсё ещё доступен, но устарел; ожидайте его удаления в будущих версиях MySQL.Включить или отключить автоматическое переподключение к серверу, если подключение окажется потерянным. Переподключение отключено по умолчанию; этот параметр предоставляет способ явного задания поведения переподключения. См. раздел 3.6.8 «Управление автоматическим переподключением».
-
MYSQL_OPT_RETRY_COUNT(тип аргумента:unsigned int *)Количество попыток повтора для системных вызовов, связанных с вводом-выводом, которые прерываются во время подключения к серверу или взаимодействия с ним. Если этот параметр не указан, значение по умолчанию равно 1 (1 попытка повторного подключения, если первоначальный вызов прерван для 2 попыток в целом).
Этот параметр может использоваться только клиентами, которые подключаются к библиотеке клиентского C, скомпилированной с поддержкой кластера NDB.
-
MYSQL_OPT_SSL_CA(тип аргумента:char *)Имя пути файла сертификата центра сертификации (CA). Если используется, этот параметр должен указывать тот же сертификат, что и сервер.
-
MYSQL_OPT_SSL_CAPATH(тип аргумента:char *)Имя пути к каталогу, содержащему файлы доверенных сертификатов CA SSL.
-
MYSQL_OPT_SSL_CERT(тип аргумента:char *)Имя пути файла сертификата открытого ключа клиента.
-
MYSQL_OPT_SSL_CIPHER(тип аргумента:char *)Список разрешённых шифров для шифрования SSL.
-
MYSQL_OPT_SSL_CRL(тип аргумента:char *)Имя пути к файлу, содержащему списки отзыва сертификатов.
-
MYSQL_OPT_SSL_CRLPATH(тип аргумента:char *)Имя пути к каталогу, содержащему файлы, содержащие списки отзыва сертификатов.
-
MYSQL_OPT_SSL_FIPS_MODE(тип аргумента:unsigned int *)Параметр
MYSQL_OPT_SSL_FIPS_MODEустарел начиная с MySQL 8.0.34 и может быть удалён в будущих версиях MySQL.Управляет включением режима FIPS на стороне клиента. Параметр
MYSQL_OPT_SSL_FIPS_MODEотличается от других параметровMYSQL_OPT_SSL_тем, что он не используется для установления зашифрованных подключений, а скорее для управления тем, какие криптографические операции разрешить. См. .xxxРазрешённые значения параметра —
SSL_FIPS_MODE_OFF,SSL_FIPS_MODE_ONиSSL_FIPS_MODE_STRICT.ПримечаниеЕсли модуль OpenSSL FIPS Object Module недоступен, единственное разрешённое значение для
MYSQL_OPT_SSL_FIPS_MODE—SSL_FIPS_MODE_OFF. В этом случае установкаMYSQL_OPT_SSL_FIPS_MODEвSSL_FIPS_MODE_ONилиSSL_FIPS_MODE_STRICTприводит к появлению предупреждения при запуске клиента и работе в режиме, не поддерживающем FIPS. -
MYSQL_OPT_SSL_KEY(тип аргумента:char *)Имя пути к файлу закрытого ключа клиента.
-
MYSQL_OPT_SSL_MODE(тип аргумента:unsigned int *)Состояние безопасности для подключения к серверу:
SSL_MODE_DISABLED,SSL_MODE_PREFERRED,SSL_MODE_REQUIRED,SSL_MODE_VERIFY_CA,SSL_MODE_VERIFY_IDENTITY. Если этот параметр не указан, значение по умолчанию —SSL_MODE_PREFERRED. Эти режимы являются допустимыми значениями перечисленияmysql_ssl_mode, определённого вmysql.h. Более подробную информацию о состояниях безопасности см. в описании в . -
MYSQL_OPT_SSL_SESSION_DATA(тип аргумента:void *)Данные сеанса для повторного использования сеанса при установлении следующего зашифрованного подключения. Он должен быть установлен до
mysql_real_connect()и послеmysql_init(). Он ожидает данные сеанса PEM, возвращённыеmysql_get_ssl_session_data(), и копирует результат в обработчик MYSQL. Он сбрасывается до значенияnullptr(значение по умолчанию) послеmysql_real_connect(), если не указано иное с помощью флагаCLIENT_REMEMBER_OPTIONS.При указании выполняется попытка повторного использования сеанса во время установления TLS.
mysql_get_option()возвращает обработчик, установленныйmysql_options(), если таковой имеется, и не увеличивает счётчик ссылок.Этот параметр был добавлен в MySQL 8.0.29.
-
MYSQL_OPT_TLS_CIPHERSUITES(тип аргумента:char *)Какие наборы шифров клиент разрешает для зашифрованных подключений, использующих TLSv1.3. Значение представляет собой список одного или нескольких имён наборов шифров, разделённых двоеточиями. Наборы шифров, которые можно указать для этого параметра, зависят от библиотеки SSL, используемой для компиляции MySQL. Подробности см. в .
Этот параметр был добавлен в MySQL 8.0.16.
-
MYSQL_OPT_TLS_VERSION(тип аргумента:char *)Какие протоколы клиент разрешает для зашифрованных подключений. Значение представляет собой список одной или нескольких версий протокола, разделённых запятыми. Протоколы, которые можно указать для этого параметра, зависят от библиотеки SSL, используемой для компиляции MySQL. Подробности см. в .
-
MYSQL_OPT_USE_RESULT(аргумент: не используется)Этот параметр не используется.
-
MYSQL_OPT_WRITE_TIMEOUT(тип аргумента:unsigned int *)Время ожидания в секундах для каждой попытки записи на сервер. При необходимости выполняется повторная попытка, поэтому общее эффективное время ожидания в два раза превышает значение параметра.
-
MYSQL_OPT_ZSTD_COMPRESSION_LEVEL(тип аргумента:unsigned int *)Уровень сжатия, используемый для подключений к серверу, которые используют алгоритм сжатия
zstd. Разрешённые уровни — от 1 до 22, причём большие значения указывают на возрастающие уровни сжатия. Если этот параметр не указан, используется уровень сжатия по умолчаниюzstd, равный 3. Настройка уровня сжатия не влияет на подключения, которые не используют сжатиеzstd.Более подробную информацию см. в .
Этот параметр был добавлен в MySQL 8.0.18. Для асинхронных операций параметр не оказывает влияния до MySQL 8.0.21.
-
MYSQL_PLUGIN_DIR(тип аргумента:char *)Каталог, в котором следует искать плагины клиента.
-
MYSQL_READ_DEFAULT_FILE(тип аргумента:char *)Считывать параметры из указанного файла параметров вместо
my.cnf. -
MYSQL_READ_DEFAULT_GROUP(тип аргумента:char *)Считывать параметры из указанной группы из
my.cnfили файла, указанного вMYSQL_READ_DEFAULT_FILE. -
MYSQL_REPORT_DATA_TRUNCATION(тип аргумента:bool *)Включить или отключить отчёт о ошибках усечения данных для подготовленных запросов, используя член
errorструктурMYSQL_BIND. (По умолчанию включено.) -
MYSQL_SERVER_PUBLIC_KEY(тип аргумента:char *)Имя пути к файлу в формате PEM, содержащему клиентскую копию открытого ключа, необходимую серверу для обмена паролем на основе пары ключей RSA. Этот параметр применим к клиентам, которые авторизуются с помощью плагина аутентификации
sha256_passwordилиcaching_sha2_password. Этот параметр игнорируется для учётных записей, которые не авторизуются с помощью одного из этих плагинов. Он также игнорируется, если обмен паролем на основе RSA не используется, как в случае, когда клиент подключается к серверу по защищённому соединению.Если задан
MYSQL_SERVER_PUBLIC_KEYи указывает на действительный файл открытого ключа, он имеет приоритет надMYSQL_OPT_GET_SERVER_PUBLIC_KEY.Сведения о плагинах
sha256_passwordиcaching_sha2_passwordсм. в , и . -
MYSQL_SET_CHARSET_DIR(тип аргумента:char *)Имя пути к каталогу, который содержит файлы определений наборов символов.
-
MYSQL_SET_CHARSET_NAME(тип аргумента:char *)Имя набора символов, который следует использовать в качестве набора символов по умолчанию. Аргумент может быть
MYSQL_AUTODETECT_CHARSET_NAME, чтобы набор символов определялся автоматически на основе системных настроек (см. ). -
MYSQL_SHARED_MEMORY_BASE_NAME(тип аргумента:char *)Имя объекта общей памяти для связи с сервером в Windows, если сервер поддерживает подключения через общую память. Укажите то же значение, что и для переменной системы сервера mysqld, к которому вы хотите подключиться.
Группа client всегда считывается, если используется MYSQL_READ_DEFAULT_FILE или MYSQL_READ_DEFAULT_GROUP.
Указанная группа в файле параметров может содержать следующие параметры.
| Параметр | Описание |
|---|---|
character-sets-dir= | Директория, где установлены наборы символов. |
compress | Использовать сжатый протокол клиент/сервер. |
connect-timeout= | Таймаут соединения в секундах. В Linux этот таймаут также используется для ожидания первого ответа от сервера. |
database= | Подключиться к этой базе данных, если база данных не была указана в команде подключения. |
debug | Параметры отладки. |
default-character-set= | Используемый по умолчанию набор символов. |
disable-local-infile | Отключить использование . |
enable-cleartext-plugin | Включить плагин аутентификации mysql_clear_password в открытом тексте. |
host= | Имя хоста по умолчанию. |
init-command= | Запрос для выполнения при подключении к серверу MySQL. Автоматически повторно выполняется при повторном подключении. |
interactive-timeout= | То же, что и указание CLIENT_INTERACTIVE для mysql_real_connect(). См. Раздел 5.4.58, “mysql_real_connect()”. |
local-infile[={0|1}] | Если аргумент отсутствует или имеет ненулевое значение, включить использование ; в противном случае отключить. |
max_allowed_packet= | Максимальный размер пакета, который клиент может считать с сервера. |
multi-queries, multi-results
| Включить получение нескольких наборов результатов из многострочных запросов или хранимых процедур. |
multi-statements | Разрешить клиенту отправлять несколько запросов в одной строке (разделенных символами ;). |
password= | Пароль по умолчанию. |
pipe | Использовать именованные каналы для подключения к серверу MySQL в Windows. |
port= | Номер порта по умолчанию. |
protocol={TCP|SOCKET|PIPE|MEMORY} | Протокол для использования при подключении к серверу. |
return-found-rows | Указать mysql_info(), чтобы возвращались найденные строки вместо обновленных строк при использовании . |
shared-memory-base-name= | Имя сегмента общей памяти для подключения к серверу. |
socket={ | Файл сокета по умолчанию. |
ssl-ca= | Файл сертификата Удостоверяющего центра. |
ssl-capath= | Директория Удостоверяющего центра. |
ssl-cert= | Файл сертификата. |
ssl-cipher= | Разрешенные шифры SSL. |
ssl-key= | Ключевой файл. |
timeout= | Аналогично connect-timeout. |
user | Пользователь по умолчанию. |
timeout был заменён на connect-timeout, но timeout по-прежнему поддерживается для обратной совместимости.
Для получения дополнительной информации о файлах параметров, используемых программами MySQL, см. .
Значения возврата
Ноль в случае успеха. ненулевое значение, если вы указали неизвестный параметр.
Пример
Следующие вызовы mysql_options() запрашивают использование сжатия в протоколе клиент/сервер, заставляют параметры считываться из группы [odbc] в файлах параметров и отключают режим автоматического подтверждения транзакций:
MYSQL mysql;
mysql_init(&mysql);
mysql_options(&mysql,MYSQL_OPT_COMPRESS,0);
mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"odbc");
mysql_options(&mysql,MYSQL_INIT_COMMAND,"SET autocommit=0");
if (!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0))
{
fprintf(stderr, "Failed to connect to database: Error: %s\n",
mysql_error(&mysql));
}
© 2025 Oracle
Licensed under the GPLv2 License.