This section describes the Security Advisors.
MySQL Enterprise Firewall and MySQL Enterprise Audit Plug-in advisors are described in MySQL Enterprise Firewall and MySQL Enterprise Audit Plugin.
Prior to MySQL 4.1, password hashes computed by the PASSWORD() function were 16 bytes long. As of MySQL 4.1 (and later), PASSWORD() was modified to produce a longer 41-byte hash value to provide enhanced security.
Default frequency 06:00:00
Default auto-close enabled no
MySQL supports many forms of authentication as of the 5.5 release, including external authentication mechanisms using PAM, or Windows native authentication with commercial releases of MySQL version 5.5.16 or greater. If a user is configured to use an authentication plug-in, and that plug-in does not get loaded with server start, this blocks access to the database for those users.
Default frequency 06:00:00
Default auto-close enabled yes
This advisor does not evaluate against MySQL 8, or higher.
Prior to MySQL 4.1, password hashes computed by the PASSWORD() function were 16 bytes long. As of MySQL 4.1 (and later), PASSWORD() was modified to produce a longer 41-byte hash value to provide enhanced security. However, in order to allow backward-compatibility with user tables that have been migrated from pre-4.1 systems, you can configure MySQL to accept logins for accounts that have password hashes created using the old, less-secure PASSWORD() function, but this is not recommended.
Default frequency 06:00:00
Default auto-close enabled no
Prior to MySQL 4.1, password hashes computed by the PASSWORD() function were 16 bytes long. As of MySQL 4.1 (and later), PASSWORD() was modified to produce a longer 41-byte hash value to provide enhanced security. In order to allow backward-compatibility with older client programs, you can configure MySQL to generate short (pre-4.1) password hashes for new passwords, however, this is not recommended.
Default frequency 06:00:00
Default auto-close enabled no
The LOAD DATA
statement can load a file that
is located on the server host, or it can load a file that is
located on the client host when the LOCAL
keyword is specified.
There are two potential security issues with supporting the
LOCAL
version of LOAD DATA
statements:
The transfer of the file from the client host to the server host is initiated by the MySQL server. In theory, a patched server could be built that would tell the client program to transfer a file of the server's choosing rather than the file named by the client in the
LOAD DATA
statement. Such a server could access any file on the client host to which the client user has read access.In a Web environment where the clients are connecting from a separate web server, a user could use
LOAD DATA LOCAL
to read any files that the web server process has read access to (assuming that a user could run any statement against the SQL server). In this environment, the client with respect to the MySQL server actually is the web server, not the remote program being run by the user who connects to the web server.
For more information, see LOAD DATA Statement.
Default frequency 00:05:00
Default auto-close enabled no
If users create weak passwords it compromises the security of
the server, making it easier for unauthorized people to guess
the password and gain access to the server. Starting with MySQL
Server 5.6, MySQL offers the
validate_password
plug-in that can be used to
test passwords and improve security. With this plug-in you can
implement and enforce a policy for password strength (e.g.
passwords must be at least 8 characters long, have both
lowercase and uppercase letters, contain at least one special
non-alphanumeric character, and do not match commonly-used
words).
For more information on validate_password
plug-in, see The Password Validation Component.
Default frequency 06:00:00
Default auto-close enabled no
If users create weak passwords, it compromises the security of
the server, making it easier for unauthorized people to guess
the password and gain access to the server. Starting with MySQL
Server 5.6, MySQL offers the
validate_password
plug-in that can be used to
test passwords and improve security. With this plug-in you can
implement and enforce a policy for password strength (e.g.
passwords must be at least 8 characters long, have both
lowercase and uppercase letters, and contain at least one
special non-alphanumeric character).
For more information on validate_password
plug-in, see The Password Validation Component.
Default frequency 06:00:00
Default auto-close enabled no
If users create weak passwords, it compromises the security of
the server, making it easier for unauthorized people to guess
the password and gain access to the server. Starting with MySQL
Server 5.6, MySQL offers the
validate_password
plug-in that can be used to
test passwords and improve security. With this plug-in you can
implement and enforce a policy for password strength (e.g.
passwords must be at least 8 characters long, have both
lowercase and uppercase letters, and contain at least one
special non-alphanumeric character).
For more information on validate_password
plug-in, see The Password Validation Component.
Default frequency 06:00:00
Default auto-close enabled no
For development environments, changes to database security privileges may be a normal occurrence, but for production environments it is wise to know when any security changes occur with respect to database privileges, and to ensure that those changes are authorized and required.
Default frequency 00:05:00
Default auto-close enabled no
For development environments, changes to database security privileges may be a normal occurrence, but for production environments it is wise to know when any security changes occur with respect to database privileges, and to ensure that those changes are authorized and required.
Default frequency 00:05:00
Default auto-close enabled no
For development environments, changes to database security privileges may be a normal occurrence, but for production environments it is wise to know when any security changes occur with respect to database privileges, and to ensure that those changes are authorized and required.
Default frequency 00:05:00
Default auto-close enabled no
By default, MySQL includes a root account with unlimited privileges that is typically used to administer the MySQL server. If possible, accounts with this much power should not allow remote logins in order to limit access to only those users able to login to the machine on which MySQL is running. This helps prevent unauthorized users from accessing and changing the system.
Default frequency 00:05:00
Default auto-close enabled no
The root user account has unlimited privileges and is intended for administrative tasks. Privileged accounts should have strong passwords to prevent unauthorized users from accessing and changing the system.
Default frequency 00:05:00
Default auto-close enabled yes
To help keep the server secure, each user's password is encrypted, and the stronger the encryption method, the more secure the server is. Starting with MySQL Server 5.6, MySQL offers a new encryption algorithm that performs authentication using SHA-256 password hashing. This is stronger encryption than that available with native authentication.
Default frequency 06:00:00
Default auto-close enabled no
By default, MySQL comes with a database named
test
that anyone can access. This database is
intended only for testing and should be removed before moving
into a production environment. Because the default
test
database can be accessed by any user and
has permissive privileges, it should be dropped immediately as
part of the installation process.
Default frequency 00:05:00
Default auto-close enabled no
Accounts without passwords are particularly dangerous because an attacker needs to guess only a username. Assigning passwords to all accounts helps prevent unauthorized users from accessing the system.
Default frequency 00:05:00
Default auto-close enabled yes
Anonymous MySQL accounts allow clients to connect to the server without specifying a username. Since anonymous accounts are well known in MySQL, removing them helps prevent unauthorized users from accessing the system.
This advisor differentiates between anonymous accounts and proxy users. For more information on proxy users, see Proxy Users.
Default frequency 00:05:00
Default auto-close enabled yes
MySQL 5.5 supports both built-in authentication and external authentication via other methods such as PAM (LDAP, Unix user authentication) and Windows native authentication. However, if all 'root' users are configured to use external authentication, if this external authentication were to fail (such as the LDAP server losing power), then all administrator access to the MySQL Server is denied.
Default frequency 06:00:00
Default auto-close enabled no
By default, MySQL includes a root account with unlimited
privileges that is typically used to administer the MySQL
server. There is no reason this account must be named
root
. Accounts with this much power should
not be easily discovered. Since the root account is well known
in MySQL, changing its name helps prevent unauthorized users
from accessing and changing the system.
Default frequency 00:05:00
Default auto-close enabled no
You can move tables and databases from the database directory to other locations and replace them with symbolic links to the new locations. You might want to do this, for example, to move a database to a file system with more free space or to increase the speed of your system by spreading your tables to different disks.
However, symlinks can compromise security. This is especially important if you run mysqld as root, because anyone who has write access to the server's data directory could then delete any file in the system!
Default frequency 06:00:00
Default auto-close enabled no
When a database is dropped, user privileges on the database are not automatically dropped. This has security implications as that user regains privileges if a database with the same name is created in the future, which may not be the intended result.
Default frequency 00:05:00
Default auto-close enabled no
When a table is dropped, user privileges on the table are not automatically dropped. This has security implications as that user regains privileges if a table with the same name in the same database is created in the future, which may not be the intended result.
Default frequency 00:05:00
Default auto-close enabled no
The SHOW DATABASES privilege should be granted only to users who
need to see all the databases on a MySQL Server. It is
recommended that the MySQL Server be started with the
--skip-show-database
option
enabled to prevent anyone from using the SHOW DATABASES
statement unless they have been specifically granted the SHOW
DATABASES privilege.
If a user is granted any global privilege, such as CREATE
TEMPORARY TABLES or LOCK TABLES, they are automatically given
the ability to show databases unless the server is started
with the --skip-show-database
option
enabled. DBAs should be aware of this fact, in the event that
any applications make use of temporary tables.
Default frequency 00:05:00
Default auto-close enabled no