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.