MySQLサーバーに接続するクライアントに必要な証明書には,パスワードを含めることができます。このセクションでは,MySQLアカウントにパスワードを割り当てる方法について説明します。クライアント認証は,プラグインを使用することで発生します。セクション6.3.7 "プラガブル認証"を参照してください。
创建用户
を使用して新しいアカウントを作成するときに,パスワードを割り当てるには,确认的
句を含めます。
CREATE USER 'jeffrey'@'localhost' - mysql> IDENTIFIED BY ' mpass ';
既存のアカウントにパスワードを割り当てる方法またはそれを変更する方法の1つは,设置密码
ステートメントを発行することです。
mysql> SET PASSWORD FOR -> 'jeffrey'@'localhost' = PASSWORD(' mpass ');
MySQLでは,mysql
データベースの用户
テーブルにパスワードが格納されます。mysql
データベースに対する更新
権限を持っている根
などのユーザーのみが,ほかのユーザーのパスワードを変更できます。匿名ユーザーとして接続していない場合は,为
句を省略すれば自分自身のパスワードを変更できます。
mysql> SET PASSWORD = PASSWORD(' mpass ');
old_passwords
システム変数の値によって,密码()
で使用されるハッシュ化方式が決定されます。その関数を使用しているパスワードを指定しても,设置密码
でそのパスワードの形式が正しくないとして拒否される場合は,old_passwords
を設定してハッシュ化方式を変更する必要がある場合もあります。許可されている値については,セクション5.1.4 "サーバーシステム変数"を参照してください。
read_only
システム変数を有効にすると,超级
権限を持っていない任意のユーザーによる设置密码
ステートメントの使用が回避されます。
また,グローバルレベル(* *。
)で格兰特使用
ステートメントを使用すると,アカウントの現在の権限に影響を与えずに,アカウントにパスワードを割り当てることができます。
mysql> GRANT USAGE ON* TO 'jeffrey'@'localhost' -> IDENTIFIED BY ' mpass ';
コマンド行からパスワードを割り当てるには,mysqladminコマンドを使用します。
壳> mysqladmin - uuser_name- hhost_name密码”newpwd"
このコマンドでパスワードが設定されるアカウントは,用户
カラム内のuser_name
に一致する用户
テーブル行を持つアカウント,および宿主
カラム内の接続元のクライアントホストです。
認証中にクライアントがサーバーに接続すると,MySQLでは用户
テーブル内のパスワードが暗号化されたハッシュ値(密码()
でパスワードに返される値)として処理されます。アカウントにパスワードを割り当てる際は,平文のパスワードではなく,暗号化された値を格納することが重要です。次のガイドラインを使用します。
创建用户
、确认的
句を含む格兰特
,またはmysqladmin密码コマンドを使用してパスワードを割り当てると,自動的にパスワードが暗号化されます。リテラルの平文パスワードを指定します。CREATE USER 'jeffrey'@'localhost' - mysql> IDENTIFIED BY ' mpass ';
创建用户
または格兰特
では,密码()
でパスワードに返されるハッシュ値がわかっている場合に,平文パスワードの送信を回避できます。前にキーワード密码
を付けたハッシュ値を指定します。mysql> CREATE USER 'jeffrey'@'localhost' -> IDENTIFIED BY PASSWORD '*90E462C37378CED12064BB3388827D2BA3A9B689';
设置密码
を使用して,アカウントに空でないパスワードを割り当てる場合は,密码()
機能を使用してパスワードを暗号化する必要があります。それ以外の場合は,パスワードが平文として格納されます。次のようなパスワードを割り当てると仮定します。mysql> SET PASSWORD FOR -> 'jeffrey'@'localhost' = ' mpass ';
その結果,暗号化された値ではなく,リテラル値の
“mypass”
がパスワードとして用户
テーブルに格納されます。杰弗里
がこのパスワードを使用してサーバーへの接続を試みると,その値が暗号化され,用户
テーブルに格納された値と比較されます。ただし,格納されている値はリテラル文字列の“mypass”
であるため,比較に失敗し,サーバーは接続を拒否し,“アクセスが拒否されました”
というエラーを返します。
密码()
の暗号化は,Unixのパスワード暗号化とは異なります。セクション6.3.1 "ユーザー名とパスワード"を参照してください。
设置密码
、格兰特
,またはmysqladminを使用してパスワードを割り当てることが望ましいですが,用户
テーブルを直接変更することもできます。この場合,冲洗的特权
を使用して,サーバーで付与テーブルを再ロードさせる必要もあります。それ以外の場合は,サーバーを再起動するまで変更が認識されないままです。