MySQL サーバ mysqld
は、どんな Unix
ユーザでも開始、実行できます。
mysqld
を Unix ユーザ
user_name
で実行できるように変更するには、以下を行ってください。
サーバが動作している場合は、それを停止します(mysqladmin
shutdown
を使用します)。
データベースのディレクトリとファイルを変更して、その中のファイルを読み込んだり書き込んだりする権限を
user_name
に与えます(場合によっては Unix
root
ユーザとして行う必要があります)。
shell> chown -R user_name /path/to/mysql/datadir
MySQL
データディレクトリ内のディレクトリまたはファイルがシンボリックリンクの場合は、リンクに従い、そのファイルやディレクトリが指しているディレクトリとファイルも変更する必要があります。chown
-R
では、シンボリックリンク先まで変更できません。
サーバを user_name
で開始するか、MySQL バージョン 3.22
以降を使用している場合は、mysqld
をUnix root
ユーザで開始して、--user=user_name
オプションを使用します。mysqld
は、接続を許可する前に、Unix ユーザ
user_name
での実行に切り替わります。
システム起動時にサーバを特定のユーザ名で自動的に開始するには、ユーザ名を指定する
user
行を、/etc/my.cnf
オプション設定ファイルかサーバのデータディレクトリにある
my.cnf
オプション設定ファイルの
[mysqld]
グループに追加します。たとえば、以下のようにします。
[mysqld] user=user_name
この時点で、mysqld
プロセスは Unix
ユーザ user_name
として正常に動作します。ただし、アクセス権テーブルの内容は変わりません。デフォルトでは(アクセス権テーブルのインストールスクリプト
mysql_install_db
の実行直後)、mysql
データベースへのアクセスまたはデータベースの作成や破棄の権限を持つ唯一のユーザは
MySQL ユーザ root
です。これらのアクセス権を変更しなかった場合、そのアクセス権はそのまま保持されます。root
以外の Unix
ユーザとしてログインしている場合も、MySQL
root
ユーザとしてMySQLにアクセスできます。そのために行うことは、-u
root
オプションをクライアントプログラムに指定するだけです。
コマンドラインで -u root
を指定して、root
としてMySQL
にアクセスすることと、Unix root
ユーザ、または実際には別の Unix ユーザとして
MySQL
を実行することとは何の関係もありません。MySQL
のアクセス権とユーザ名は、Unix
ユーザ名とは完全に別のものです。Unix
ユーザ名と唯一関連があるのは、クライアントプログラムを呼び出すときに
-u
オプションを指定しない場合に、クライアントが
MySQL ユーザ名として Unix
ログイン名を使用して接続を試みるということだけです。
Unix
ボックスそのものが保護されていない場合は、少なくとも、アクセステーブルの
MySQL root
ユーザにパスワードを設定しておく必要があります。
そうしなければ、マシンにアカウントのあるユーザは、mysql
-u root db_name
を実行して思い通りのことを行えます。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.