トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

MySQLでのユーザを追加(Linux)

MySQLでのユーザを追加(Linux)

RedHat9上にてMySQLの一般ユーザ情報を追加する場合、mysqladminを使うとなぜかうまくいかなかったため、直接データベース上のユーザレコードに追加を行うようにしました。ユーザ情報は、MySQL内のデータベース「mysql」内の「user」テーブルに含まれています。mysqlのコマンドラインモードで以下のように指定します。

insert into user set host='localhost.my.domain',
   user='yoshi',password=Password('hoehoe'),
   Select_priv='Y',
   Insert_priv='Y',
   Update_priv='Y',
   Delete_priv='Y',
   Create_priv='Y';

この例では、ユーザ名「yoshi」/パスワード「hoehoe」のユーザを追加しています。その際に、SQL文のselect/insert/update/delete/create(create table)の権限を与えています。権限を与えたくない場合は、'N'を指定します。どのようなパラメータがその他にあるか、というのは「show fields from user;」にて確認してみてください。

これは、mysqladminにてユーザを追加しても、MySQL自身がユーザ情報を検出するときに「/etc/hosts」の2番目の情報を取得してしまうためにユーザ認識に失敗してしまう、と思われます。userテーブルに直接ユーザ情報を入れる際に、ホスト名(項目名がhost)を「localhost.my.domain」とすると、RedHat9上のMySQLでは「localhost」と認識するため、正常にユーザ認識が行われるようです。

なお、ユーザ追加後は、mysqlのコマンドラインモードからexitで抜けた後に、

mysqladmin -u root reload

にて、設定を再度読み込む(認識させる)ようにしてください。

MySQLコマンドラインでのコマンドによるユーザ追加(Windows/Linux)

普通にユーザを追加したい場合は、MySQLのコマンドラインで以下のように指定することでユーザ追加を行うことができます(DBへの直接追加は最終手段)。

grant all on *.* to yoshi@localhost identified by 'hoehope';

これはサーバ「localhost」にユーザ名/パスワード「yoshi/hoehoe」で追加しています。「grant all」なのですべてのアクセス権限を与えてます。

MySQL 4.1でのパスワードについて(Windows/Linux)

MySQL 4.0から4.1の移行にかけて、どうもMySQLデータベース上のパスワードのハッシュが変更されたとのことで、たとえばPHP4.3でMySQL(4.1)のデータベースを作成する場合にうまいことコネクションができない、という現象が発生してました。

このような場合は、パスワードの方式を古い形式にコンバートすることで解決する糸口となります。MySQLのコマンドラインで以下のように指定します。

set password for yoshi@localhost=OLD_PASSWORD("hoehoe");

この場合は、サーバ「localhost」のユーザID「yoshi」のパスワードを「hoehoe」にしてます。

Future's Laboratory 技術格納庫 2004-2013 Yutaka Yoshisaka.