The following mysqld options affect security:
Table 5.5. Security Option/Variable Summary
Name | Cmd-Line | Option file | System Var | Status Var | Var Scope | Dynamic |
---|---|---|---|---|---|---|
allow-suspicious-udfs | Yes | Yes | ||||
automatic_sp_privileges | Yes | Global | Yes | |||
chroot | Yes | Yes | ||||
des-key-file | Yes | Yes | ||||
local_infile | Yes | Global | Yes | |||
local-infile | Yes | Yes | ||||
- Variable: local_infile | ||||||
old-passwords | Yes | Yes | Both | Yes | ||
- Variable: old_passwords | Yes | Both | Yes | |||
safe-show-database | Yes | Yes | Yes | Global | Yes | |
safe-user-create | Yes | Yes | ||||
secure-auth | Yes | Yes | Global | Yes | ||
- Variable: secure_auth | Yes | Global | Yes | |||
secure-file-priv | Yes | Yes | Global | No | ||
- Variable: secure_file_priv | Yes | Global | No | |||
skip-grant-tables | Yes | Yes | ||||
skip-name-resolve | Yes | Yes | Global | No | ||
- Variable: skip_name_resolve | Yes | Global | No | |||
skip-networking | Yes | Yes | Global | No | ||
- Variable: skip_networking | Yes | Global | No | |||
skip-show-database | Yes | Yes | Global | No | ||
- Variable: skip_show_database | Yes | Global | No |
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. See Section 23.3.2.6, “User-Defined Function Security Precautions”.If you start the server with
--local-infile=0
, clients cannot useLOCAL
inLOAD DATA
statements. See Section 5.3.5, “Security Issues withLOAD DATA LOCAL
”.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 Section 5.3.2.3, “Password Hashing in MySQL”.
If this option is enabled, a user cannot create new MySQL users by using the
GRANT
statement unless the user has theINSERT
privilege for themysql.user
table or any column in the table. If you want a user to have the ability to create new users that have those privileges that the user has the right to grant, you should grant the user the following privilege:GRANT INSERT(user) ON mysql.user TO '
user_name
'@'host_name
';This ensures that the user cannot change any privilege columns directly, but has to use the
GRANT
statement to give privileges to other users.Disallow authentication for accounts that have old (pre-4.1) passwords.
The mysql client also has a
--secure-auth
option, which prevents connections to a server if the server requires a password in old format for the client account.This option limits the effect of the
LOAD_FILE()
function and theLOAD DATA
andSELECT ... INTO OUTFILE
statements to work only with files in the specified directory.This option causes the server to start without using 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 plugins that were installed with theINSTALL PLUGIN
statement, user-defined functions (UDFs), and scheduled events. To cause plugins to be loaded anyway, use the--plugin-load
option.--skip-grant-tables
is unavailable if MySQL was configured with theDISABLE_GRANT_OPTIONS
compiler flag. See Section 2.11.4, “MySQL Source-Configuration Options”.Host names are not resolved. All
Host
column values in the grant tables must be IP addresses orlocalhost
.Do not permit TCP/IP connections over the network. All connections to mysqld must be made using Unix socket files.
With this option, the
SHOW DATABASES
statement is permitted only to users who have theSHOW DATABASES
privilege, and the statement displays all database names. Without this option,SHOW DATABASES
is permitted to all users, but displays each database name only if the user has theSHOW DATABASES
privilege or some privilege for the database. Note that any global privilege is a privilege for the database.Options that begin with
--ssl
specify whether to permit clients to connect using SSL and indicate where to find SSL keys and certificates. See Section 5.5.8.3, “SSL Command Options”.