GNU Info

Info Node: (mysql.info)Changing MySQL user

(mysql.info)Changing MySQL user


Next: File permissions Prev: Link errors Up: Installation Issues
Enter node , (file) or (file)node

How to Run MySQL As a Normal User
---------------------------------

The MySQL server `mysqld' can be started and run by any user.  In order
to change `mysqld' to run as a Unix user `user_name', you must do the
following:

  1. Stop the server if it's running (use `mysqladmin shutdown').

  2. Change the database directories and files so that `user_name' has
     privileges to read and write files in them (you may need to do
     this as the Unix `root' user):

          shell> chown -R user_name /path/to/mysql/datadir

     If directories or files within the MySQL data directory are
     symlinks, you'll also need to follow those links and change the
     directories and files they point to.  `chown -R' may not follow
     symlinks for you.

  3. Start the server as user `user_name', or, if you are using MySQL
     Version 3.22 or later, start `mysqld' as the Unix `root' user and
     use the `--user=user_name' option.  `mysqld' will switch to run as
     the Unix user `user_name' before accepting any connections.

  4. To start the server as the given user name automatically at system
     startup time, add a `user' line that specifies the user name 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

At this point, your `mysqld' process should be running fine and dandy as
the Unix user `user_name'. One thing hasn't changed, though: the
contents of the permissions tables. By default (right after running the
permissions table install script `mysql_install_db'), the MySQL user
`root' is the only user with permission to access the `mysql' database
or to create or drop databases.  Unless you have changed those
permissions, they still hold. This shouldn't stop you from accessing
MySQL as the MySQL `root' user when you're logged in as a Unix user
other than `root'; just specify the `-u root' option to the client
program.

Note that accessing MySQL as `root', by supplying `-u root' on the
command line, has _nothing_ to do with MySQL running as the Unix `root'
user, or, indeed, as another Unix user. The access permissions and user
names of MySQL are completely separate from Unix user names. The only
connection with Unix user names is that if you don't provide a `-u'
option when you invoke a client program, the client will try to connect
using your Unix login name as your MySQL user name.

If your Unix box itself isn't secured, you should probably at least put
a password on the MySQL `root' users in the access tables.  Otherwise,
any user with an account on that machine can run `mysql -u root
db_name' and do whatever he likes.


automatically generated by info2www version 1.2.2.9