(mysql.info) server-options
Info Catalog
(mysql.info) mysqld
(mysql.info) mysqld
(mysql.info) server-system-variables
5.2.1 `mysqld' Command Options
------------------------------
When you start the `mysqld' server, you can specify program options
using any of the methods described in program-options. The most
common methods are to provide options in an option file or on the
command line. However, in most cases it is desirable to make sure that
the server uses the same options each time it runs. The best way to
ensure this is to list them in an option file. See option-files.
`mysqld' reads options from the `[mysqld]' and `[server]' groups.
`mysqld_safe' reads options from the `[mysqld]', `[server]',
`[mysqld_safe]', and `[safe_mysqld]' groups. `mysql.server' reads
options from the `[mysqld]' and `[mysql.server]' groups.
An embedded MySQL server usually reads options from the `[server]',
`[embedded]', and `[XXXXX_SERVER]' groups, where XXXXX is the name of
the application into which the server is embedded.
`mysqld' accepts many command options. For a brief list, execute
`mysqld --help'. To see the full list, use `mysqld --verbose --help'.
The following list shows some of the most common server options.
Additional options are described in other sections:
* Options that affect security: See privileges-options.
* SSL-related options: See ssl-options.
* Binary log control options: See binary-log.
* Replication-related options: See replication-options.
* Options specific to particular storage engines: See
myisam-start, bdb-start, innodb-parameters, and
new-mysqld-command-options.
You can also set the values of server system variables by using
variable names as options, as described later in this section.
* -help, -?
Display a short help message and exit. Use both the -verbose and
-help options to see the full message.
* -allow-suspicious-udfs
This option controls whether user-defined functions that have only
an `xxx' symbol for the main function can be loaded. By default,
the option is off and only UDFs that have at least one auxiliary
symbol can be loaded; this prevents attempts at loading functions
from shared object files other than those containing legitimate
UDFs. This option was added in version 5.0.3. See
udf-security.
* -ansi
Use standard (ANSI) SQL syntax instead of MySQL syntax. For more
precise control over the server SQL mode, use the -sql-mode option
instead. See ansi-mode, and server-sql-mode.
* -basedir=PATH, -b PATH
The path to the MySQL installation directory. All paths are
usually resolved relative to this directory.
* -bind-address=IP
The IP address to bind to.
* -bootstrap
This option is used by the `mysql_install_db' script to create the
MySQL privilege tables without having to start a full MySQL server.
* -character-sets-dir=PATH
The directory where character sets are installed. See
character-sets.
* -character-set-client-handshake
Don't ignore character set information sent by the client. To
ignore client information and use the default server character
set, use -skip-character-set-client-handshake; this makes MySQL
behave like MySQL 4.0.
* -character-set-filesystem=CHARSET_NAME
The filesystem character set. This option sets the
`character_set_filesystem' system variable. It was added in MySQL
5.0.19.
* -character-set-server=CHARSET_NAME, -C CHARSET_NAME
Use CHARSET_NAME as the default server character set. See
character-sets.
* -chroot=PATH
Put the `mysqld' server in a closed environment during startup by
using the `chroot()' system call. This is a recommended security
measure. Note that use of this option somewhat limits `LOAD DATA
INFILE' and `SELECT ... INTO OUTFILE'.
* -collation-server=COLLATION_NAME
Use COLLATION_NAME as the default server collation. See
character-sets.
* -console
(Windows only.) Write error log messages to `stderr' and `stdout'
even if -log-error is specified. `mysqld' does not close the
console window if this option is used.
* -core-file
Write a core file if `mysqld' dies. For some systems, you must
also specify the -core-file-size option to `mysqld_safe'. See
mysqld-safe. Note that on some systems, such as Solaris,
you do not get a core file if you are also using the -user option.
* -datadir=PATH, -h PATH
The path to the data directory.
* -debug[=DEBUG_OPTIONS], -# [DEBUG_OPTIONS]
If MySQL is configured with -with-debug, you can use this option
to get a trace file of what `mysqld' is doing. The DEBUG_OPTIONS
string often is `'d:t:o,FILE_NAME''. The default is
`'d:t:i:o,mysqld.trace''. See making-trace-files.
* -default-character-set=CHARSET_NAME (_DEPRECATED_)
Use CHARSET_NAME as the default character set. This option is
deprecated in favor of -character-set-server. See
character-sets.
* -default-collation=COLLATION_NAME
Use COLLATION_NAME as the default collation. This option is
deprecated in favor of -collation-server. See
character-sets.
* -default-storage-engine=TYPE
Set the default storage engine (table type) for tables. See
storage-engines.
* -default-table-type=TYPE
This option is a synonym for -default-storage-engine.
* -default-time-zone=TIMEZONE
Set the default server time zone. This option sets the global
`time_zone' system variable. If this option is not given, the
default time zone is the same as the system time zone (given by
the value of the `system_time_zone' system variable.
* -delay-key-write[= OFF | ON | ALL]
Specify how to use delayed key writes. Delayed key writing causes
key buffers not to be flushed between writes for `MyISAM' tables.
`OFF' disables delayed key writes. `ON' enables delayed key writes
for those tables that were created with the `DELAY_KEY_WRITE'
option. `ALL' delays key writes for all `MyISAM' tables. See
server-parameters, and myisam-start.
* If you set this variable to `ALL', you should not use
`MyISAM' tables from within another program (such as another MySQL
server or `myisamchk') when the tables are in use. Doing so leads
to index corruption.
* -des-key-file=FILE_NAME
Read the default DES keys from this file. These keys are used by
the `DES_ENCRYPT()' and `DES_DECRYPT()' functions.
* -enable-named-pipe
Enable support for named pipes. This option applies only on
Windows NT, 2000, XP, and 2003 systems, and can be used only with
the `mysqld-nt' and `mysqld-max-nt' servers that support
named-pipe connections.
* -exit-info[=FLAGS], -T [FLAGS]
This is a bit mask of different flags that you can use for
debugging the `mysqld' server. Do not use this option unless you
know _exactly_ what it does!
* -external-locking
Enable external locking (system locking), which is disabled by
default as of MySQL 4.0. Note that if you use this option on a
system on which `lockd' does not fully work (such as Linux), it is
easy for `mysqld' to deadlock. This option previously was named
-enable-locking.
* If you use this option to enable updates to `MyISAM'
tables from many MySQL processes, you must ensure that the
following conditions are satisfied:
* You should not use the query cache for queries that use
tables that are updated by another process.
* You should not use -delay-key-write=ALL or
`DELAY_KEY_WRITE=1' on any shared tables.
The easiest way to ensure this is to always use -external-locking
together with -delay-key-write=OFF and -query-cache-size=0. (This
is not done by default because in many setups it is useful to have
a mixture of the preceding options.)
* -flush
Flush (synchronize) all changes to disk after each SQL statement.
Normally, MySQL does a write of all changes to disk only after
each SQL statement and lets the operating system handle the
synchronizing to disk. See crashing.
* -init-file=FILE
Read SQL statements from this file at startup. Each statement must
be on a single line and should not include comments.
* -innodb-safe-binlog
Adds consistency guarantees between the content of `InnoDB' tables
and the binary log. See binary-log. This option was
removed in MySQL 5.0.3, having been made obsolete by the
introduction of XA transaction support.
* -innodb-XXX
The `InnoDB' options are listed in innodb-parameters.
* -language=LANG_NAME, -L LANG_NAME
Return client error messages in the given language. LANG_NAME can
be given as the language name or as the full pathname to the
directory where the language files are installed. See
languages.
* -large-pages
Some hardware/operating system architectures support memory pages
greater than the default (usually 4KB). The actual implementation
of this support depends on the underlying hardware and OS.
Applications that perform a lot of memory accesses may obtain
performance improvements by using large pages due to reduced
Translation Lookaside Buffer (TLB) misses.
Currently, MySQL supports only the Linux implementation of large
pages support (which is called HugeTLB in Linux). We have plans to
extend this support to FreeBSD, Solaris and possibly other
platforms.
Before large pages can be used on Linux, it is necessary to
configure the HugeTLB memory pool. For reference, consult the
`hugetlbpage.txt' file in the Linux kernel source.
This option is disabled by default. It was added in MySQL 5.0.3.
* -log[=FILE_NAME], -l [FILE_NAME]
Log connections and SQL statements received from clients to this
file. See query-log. If you omit the filename, MySQL uses
`HOST_NAME.log' as the filename.
* -log-bin=[BASE_NAME]
Enable binary logging. The server logs all statements that change
data to the binary log, which is used for backup and replication.
See binary-log.
The option value, if given, is the basename for the log sequence.
The server creates binary log files in sequence by adding a
numeric suffix to the basename. It is recommended that you specify
a basename (see open-bugs, for the reason). Otherwise,
MySQL uses `HOST_NAME-bin' as the basename.
* -log-bin-index[=FILE_NAME]
The index file for binary log filenames. See binary-log.
If you omit the filename, and if you didn't specify one with
-log-bin, MySQL uses `HOST_NAME-bin.index' as the filename.
* -log-bin-trust-function-creators[={0|1}]
With no argument or an argument of 1, this option sets the
`log_bin_trust_function_creators' system variable to 1. With an
argument of 0, this option sets the system variable to 0.
`log_bin_trust_function_creators' affects how MySQL enforces
restrictions on stored function creation. See
stored-procedure-logging.
This option was added in MySQL 5.0.16.
* -log-bin-trust-routine-creators[={0|1}]
This is the old name for -log-bin-trust-function-creators. Before
MySQL 5.0.16, it also applies to stored procedures, not just
stored functions and sets the `log_bin_trust_routine_creators'
system variable. As of 5.0.16, this option is deprecated. It is
recognized for backward compatibility but its use results in a
warning.
This option was added in MySQL 5.0.6.
* -log-error[=FILE_NAME]
Log errors and startup messages to this file. See
error-log. If you omit the filename, MySQL uses `HOST_NAME.err'.
If the filename has no extension, the server adds an extension of
`.err'.
* -log-isam[=FILE_NAME]
Log all `MyISAM' changes to this file (used only when debugging
`MyISAM').
* -log-long-format (_DEPRECATED_)
Log extra information to the update log, binary update log, and
slow query log, if they have been activated. For example, the
username and timestamp are logged for all queries. This option is
deprecated, as it now represents the default logging behavior.
(See the description for -log-short-format.) The
-log-queries-not-using-indexes option is available for the purpose
of logging queries that do not use indexes to the slow query log.
* -log-queries-not-using-indexes
If you are using this option with -log-slow-queries, queries that
do not use indexes are logged to the slow query log. See
slow-query-log.
* -log-short-format
Log less information to the update log, binary update log, and
slow query log, if they have been activated. For example, the
username and timestamp are not logged for queries.
* -log-slow-admin-statements
Log slow administrative statements such as `OPTIMIZE TABLE',
`ANALYZE TABLE', and `ALTER TABLE' to the slow query log.
* -log-slow-queries[=FILE_NAME]
Log all queries that have taken more than `long_query_time'
seconds to execute to this file. See slow-query-log. See
the descriptions of the -log-long-format and -log-short-format
options for details.
* -log-warnings=[LEVEL], -W [LEVEL]
Print out warnings such as `Aborted connection...' to the error
log. Enabling this option is recommended, for example, if you use
replication (you get more information about what is happening,
such as messages about network failures and reconnections). This
option is enabled (1) by default, and the default LEVEL value if
omitted is 1. To disable this option, use -log-warnings=0. Aborted
connections are not logged to the error log unless the value is
greater than 1. See communication-errors.
* -low-priority-updates
Give table-modifying operations (`INSERT', `REPLACE', `DELETE',
`UPDATE') lower priority than selects. This can also be done via
`{INSERT | REPLACE | DELETE | UPDATE} LOW_PRIORITY ...' to lower
the priority of only one query, or by `SET LOW_PRIORITY_UPDATES=1'
to change the priority in one thread. See table-locking.
* -memlock
Lock the `mysqld' process in memory. This works on systems such as
Solaris that support the `mlockall()' system call. This might help
if you have a problem where the operating system is causing
`mysqld' to swap on disk. Note that use of this option requires
that you run the server as `root', which is normally not a good
idea for security reasons. See changing-mysql-user.
* -myisam-recover[=OPTION[,OPTION]...]]
Set the `MyISAM' storage engine recovery mode. The option value is
any combination of the values of `DEFAULT', `BACKUP', `FORCE', or
`QUICK'. If you specify multiple values, separate them by commas.
You can also use a value of `""' to disable this option. If this
option is used, each time `mysqld' opens a `MyISAM' table, it
checks whether the table is marked as crashed or wasn't closed
properly. (The last option works only if you are running with
external locking disabled.) If this is the case, `mysqld' runs a
check on the table. If the table was corrupted, `mysqld' attempts
to repair it.
The following options affect how the repair works:
*Option* *Description*
`DEFAULT' The same as not giving any option to
-myisam-recover.
`BACKUP' If the data file was changed during recovery,
save a backup of the `TBL_NAME.MYD' file as
`TBL_NAME-DATETIME.BAK'.
`FORCE' Run recovery even if we would lose more than
one row from the `.MYD' file.
`QUICK' Don't check the rows in the table if there
aren't any delete blocks.
Before the server automatically repairs a table, it writes a note
about the repair to the error log. If you want to be able to
recover from most problems without user intervention, you should
use the options `BACKUP,FORCE'. This forces a repair of a table
even if some rows would be deleted, but it keeps the old data file
as a backup so that you can later examine what happened.
See myisam-start.
* -ndb-connectstring=CONNECT_STRING
When using the `NDB' storage engine, it is possible to point out
the management server that distributes the cluster configuration
by setting the connect string option. See
mysql-cluster-connectstring, for syntax.
* -ndbcluster
If the binary includes support for the `NDB Cluster' storage
engine, this option enables the engine, which is disabled by
default. See ndbcluster.
* -old-passwords
Force the server to generate short (pre-4.1) password hashes for
new passwords. This is useful for compatibility when the server
must support older client programs. See password-hashing.
* -one-thread
Only use one thread (for debugging under Linux). This option is
available only if the server is built with debugging enabled. See
debugging-server.
* -open-files-limit=COUNT
Change the number of file descriptors available to `mysqld'. If
this option is not set or is set to 0, `mysqld' uses the value to
reserve file descriptors with `setrlimit()'. If the value is 0,
`mysqld' reserves `max_connections×5' or `max_connections +
table_open_cache×2' files (whichever is larger). You should try
increasing this value if `mysqld' gives you the error `Too many
open files'.
* -pid-file=PATH
The pathname of the process ID file. This file is used by other
programs such as `mysqld_safe' to determine the server's process
ID.
* -port=PORT_NUM, -P PORT_NUM
The port number to use when listening for TCP/IP connections. The
port number must be 1024 or higher unless the server is started by
the `root' system user.
* -port-open-timeout=NUM
On some systems, when the server is stopped, the TCP/IP port might
not become available immediately. If the server is restarted
quickly afterward, its attempt to reopen the port can fail. This
option indicates how many seconds the server should wait for the
TCP/IP port to become free if it cannot be opened. The default is
not to wait. This option was added in MySQL 5.0.19.
* -safe-mode
Skip some optimization stages.
* -safe-show-database (_DEPRECATED_)
See privileges-provided.
* -safe-user-create
If this option is enabled, a user cannot create new MySQL users by
using the `GRANT' statement, if the user doesn't have the `INSERT'
privilege for the `mysql.user' table or any column in the table.
* -secure-auth
Disallow authentication by clients that attempt to use accounts
that have old (pre-4.1) passwords.
* -shared-memory
Enable shared-memory connections by local clients. This option is
available only on Windows.
* -shared-memory-base-name=NAME
The name of shared memory to use for shared-memory connections.
This option is available only on Windows. The default name is
`MYSQL'. The name is case sensitive.
* -skip-bdb
Disable the `BDB' storage engine. This saves memory and might
speed up some operations. Do not use this option if you require
`BDB' tables.
* -skip-concurrent-insert
Turn off the ability to select and insert at the same time on
`MyISAM' tables. (This is to be used only if you think you have
found a bug in this feature.)
* -skip-external-locking
Do not use external locking (system locking). With external
locking disabled, you must shut down the server to use
`myisamchk'. (See stability.) To avoid this requirement,
use the `CHECK TABLE' and `REPAIR TABLE' statements to check and
repair `MyISAM' tables.
External locking has been disabled by default since MySQL 4.0.
* -skip-grant-tables
This option causes the server not to use the privilege system at
all, which gives anyone with access to the server _unrestricted
access to all databases_. You can cause a running server to start
using the grant tables again by executing `mysqladmin
flush-privileges' or `mysqladmin reload' command from a system
shell, or by issuing a MySQL `FLUSH PRIVILEGES' statement after
connecting to the server. This option also suppresses loading of
user-defined functions (UDFs).
* -skip-host-cache
Do not use the internal hostname cache for faster name-to-IP
resolution. Instead, query the DNS server every time a client
connects. See dns.
* -skip-innodb
Disable the `InnoDB' storage engine. This saves memory and disk
space and might speed up some operations. Do not use this option
if you require `InnoDB' tables.
* -skip-name-resolve
Do not resolve hostnames when checking client connections. Use
only IP numbers. If you use this option, all `Host' column values
in the grant tables must be IP numbers or `localhost'. See
dns.
* -skip-ndbcluster
Disable the `NDB Cluster' storage engine. This is the default for
binaries that were built with `NDB Cluster' storage engine
support; the server allocates memory and other resources for this
storage engine only if the -ndbcluster option is given explicitly.
See mysql-cluster-quick, for an example of usage.
* -skip-networking
Don't listen for TCP/IP connections at all. All interaction with
`mysqld' must be made via named pipes or shared memory (on
Windows) or Unix socket files (on Unix). This option is highly
recommended for systems where only local clients are allowed. See
dns.
* -standalone
Available on Windows NT-based systems only; instructs the MySQL
server not to run as a service.
* -symbolic-links, -skip-symbolic-links
Enable or disable symbolic link support. This option has different
effects on Windows and Unix:
* On Windows, enabling symbolic links allows you to establish a
symbolic link to a database directory by creating a
`DB_NAME.sym' file that contains the path to the real
directory. See windows-symbolic-links.
* On Unix, enabling symbolic links means that you can link a
`MyISAM' index file or data file to another directory with
the `INDEX DIRECTORY' or `DATA DIRECTORY' options of the
`CREATE TABLE' statement. If you delete or rename the table,
the files that its symbolic links point to also are deleted
or renamed. See symbolic-links-to-tables.
* -skip-safemalloc
If MySQL is configured with -with-debug=full, all MySQL programs
check for memory overruns during each memory allocation and memory
freeing operation. This checking is very slow, so for the server
you can avoid it when you don't need it by using the
-skip-safemalloc option.
* -skip-show-database
With this option, the `SHOW DATABASES' statement is allowed only
to users who have the `SHOW DATABASES' privilege, and the
statement displays all database names. Without this option, `SHOW
DATABASES' is allowed to all users, but displays each database
name only if the user has the `SHOW DATABASES' privilege or some
privilege for the database. Note that _any_ global privilege is
considered a privilege for the database.
* -skip-stack-trace
Don't write stack traces. This option is useful when you are
running `mysqld' under a debugger. On some systems, you also must
use this option to get a core file. See debugging-server.
* -skip-thread-priority
Disable using thread priorities for faster response time.
* -socket=PATH
On Unix, this option specifies the Unix socket file to use when
listening for local connections. The default value is
`/tmp/mysql.sock'. On Windows, the option specifies the pipe name
to use when listening for local connections that use a named pipe.
The default value is `MySQL' (not case sensitive).
* -sql-mode=VALUE[,VALUE[,VALUE...]]
Set the SQL mode. See server-sql-mode.
* -temp-pool
This option causes most temporary files created by the server to
use a small set of names, rather than a unique name for each new
file. This works around a problem in the Linux kernel dealing with
creating many new files with different names. With the old
behavior, Linux seems to `leak' memory, because it is being
allocated to the directory entry cache rather than to the disk
cache.
* -transaction-isolation=LEVEL
Sets the default transaction isolation level. The `level' value
can be `READ-UNCOMMITTED', `READ-COMMITTED', `REPEATABLE-READ', or
`SERIALIZABLE'. See set-transaction.
* -tmpdir=PATH, -t PATH
The path of the directory to use for creating temporary files. It
might be useful if your default `/tmp' directory resides on a
partition that is too small to hold temporary tables. This option
accepts several paths that are used in round-robin fashion. Paths
should be separated by colon characters (‘`:'’) on Unix and
semicolon characters (‘`;'’) on Windows, NetWare, and OS/2. If
the MySQL server is acting as a replication slave, you should not
set -tmpdir to point to a directory on a memory-based filesystem
or to a directory that is cleared when the server host restarts.
For more information about the storage location of temporary
files, see temporary-files. A replication slave needs some
of its temporary files to survive a machine restart so that it can
replicate temporary tables or `LOAD DATA INFILE' operations. If
files in the temporary file directory are lost when the server
restarts, replication fails.
* -user={USER_NAME | USER_ID}, -u {USER_NAME | USER_ID}
Run the `mysqld' server as the user having the name USER_NAME or
the numeric user ID USER_ID. (`User' in this context refers to a
system login account, not a MySQL user listed in the grant tables.)
This option is _mandatory_ when starting `mysqld' as `root'. The
server changes its user ID during its startup sequence, causing it
to run as that particular user rather than as `root'. See
security-guidelines.
To avoid a possible security hole where a user adds a -user=root
option to a `my.cnf' file (thus causing the server to run as
`root'), `mysqld' uses only the first -user option specified and
produces a warning if there are multiple -user options. Options in
`/etc/my.cnf' and `$MYSQL_HOME/my.cnf' are processed before
command-line options, so it is recommended that you put a -user
option in `/etc/my.cnf' and specify a value other than `root'. The
option in `/etc/my.cnf' is found before any other -user options,
which ensures that the server runs as a user other than `root',
and that a warning results if any other -user option is found.
* -version, -V
Display version information and exit.
You can assign a value to a server system variable by using an option
of the form -VAR_NAME=VALUE. For example, -key_buffer_size=32M sets the
`key_buffer_size' variable to a value of 32MB.
Note that when you assign a value to a variable, MySQL might
automatically correct the value to stay within a given range, or adjust
the value to the closest allowable value if only certain values are
allowed.
If you want to restrict the maximum value to which a variable can be
set at runtime with `SET', you can define this by using the
-maximum-VAR_NAME command-line option.
It is also possible to set variables by using
-set-variable=VAR_NAME=VALUE or -O VAR_NAME=VALUE syntax. _This syntax
is deprecated_.
You can change the values of most system variables for a running server
with the `SET' statement. See set-option.
server-system-variables, provides a full description for all
variables, and additional information for setting them at server
startup and runtime. server-parameters, includes information on
optimizing the server by tuning system variables.
Info Catalog
(mysql.info) mysqld
(mysql.info) mysqld
(mysql.info) server-system-variables
automatically generated byinfo2html