5.6.5. How to Run MySQL as a Normal User
On Windows, you can run the server as a Windows service using a
normal user account.
On Unix, 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's 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):
shell> chown -R user_name
/path/to/mysql/datadir
If you do not do this, the server will not be able to access
databases or tables when it runs as
user_name
.
If directories or files within the MySQL data directory are
symbolic links, you'll also need to follow those links and
change the directories and files they point to.
chown -R
might not follow symbolic links
for you.
Start the server as user
user_name
. If you are using MySQL
3.22 or later, another alternative is to start
mysqld as the Unix
root
user and use the
--user=user_name
option. mysqld starts up, then switches
to run as the Unix user user_name
before accepting any connections.
-
To start the server as the given user automatically at
system startup time, specify the username 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 isn't secured, you should assign
passwords to the MySQL root
accounts 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, “Post-Installation Setup and Testing”.