MySQL 9.3 Reference Manual Including MySQL NDB Cluster 9.3
On Windows, you can run the server as a Windows service using a normal user account.
On Linux, for installations performed using a MySQL repository or
RPM packages, the MySQL server mysqld should be
started by the local mysql
operating system
user. Starting by another operating system user is not supported
by the init scripts that are included as part of the MySQL
repositories.
On Unix (or Linux for installations performed using
tar.gz
packages) , the MySQL server
mysqld can be started and run by any user.
However, you should avoid running the server as the Unix
root
user for security reasons. To change
mysqld to run as a normal unprivileged Unix
user user_name
, you must do the
following:
Stop the server if it is running (use mysqladmin shutdown).
Change the database directories and files so that
user_name
has privileges to read
and write files in them (you might need to do this as the Unix
root
user):
$> chown -R user_name
/path/to/mysql/datadir
If you do not do this, the server cannot access databases or
tables when it runs as user_name
.
If directories or files within the MySQL data directory are
symbolic links, chown -R
might not follow
symbolic links for you. If it does not, you must also follow
those links and change the directories and files they point
to.
Start the server as user user_name
.
Another alternative is to start mysqld as
the Unix root
user and use the
--user=
option. mysqld starts, then switches to run
as the Unix user user_name
user_name
before
accepting any connections.
To start the server as the given user automatically at system
startup time, specify the user name by adding a
user
option to the
[mysqld]
group of the
/etc/my.cnf
option file or the
my.cnf
option file in the server's data
directory. For example:
[mysqld]
user=user_name
If your Unix machine itself is not secured, you should assign
passwords to the MySQL root
account in the
grant tables. Otherwise, any user with a login account on that
machine can run the mysql client with a
--user=root
option and perform any
operation. (It is a good idea to assign passwords to MySQL
accounts in any case, but especially so when other login accounts
exist on the server host.) See
Section 2.9.4, “Securing the Initial MySQL Account”.