SET PASSWORD [FORuser
] = { PASSWORD('some password
') | OLD_PASSWORD('some password
') | 'encrypted password
' }
SET PASSWORD
ステートメントは既存 MySQL
ユーザーアカウントにパスワードを割り当てます。
パスワードが
PASSWORD()
または
OLD_PASSWORD()
関数を使用して指定されている場合は、パスワードのリテラルテキストを指定する必要があります。パスワードがどちらの関数も使用せずに指定されている場合、そのパスワードは、PASSWORD()
によって返されるような、すでに暗号化されているパスワード値である必要があります。
FOR
節無しで、このステートメントは現在のユーザーにパスワードを設定します。非匿名アカウントを使用してサーバーに接続されているクライアントはすべて、そのアカウントのパスワードを変更できます。
このステートメントは、FOR
節を利用して、現在のサーバーホスト上の特定のアカウントにパスワードを設定します。mysql
データベースの
UPDATE
権限を持つクライアントだけがこれを実行できます。user
は、user_name
と
host_name
が、mysql.user
テーブルエントリの
User
と
Host
カラム内でリストされているのとまったく同じである
フォーマット内で与えられる必要があります。たとえば、もし
user_name
@host_name
'bob'
と
'%.loc.gov'
の
User
と
Host
カラム値と共にエントリを持っていたら、ステートメントを次のように書くでしょう。
SET PASSWORD FOR 'bob'@'%.loc.gov' = PASSWORD('newpass
');
これは、次のステートメントと同等です。
UPDATE mysql.user SET Password=PASSWORD('newpass
')
WHERE User='bob' AND Host='%.loc.gov';
FLUSH PRIVILEGES;
4.1
より前のクライアントプログラムを使用して
MySQL 4.1
以降のサーバーに接続している場合は、前の
SET PASSWORD
または
UPDATE
ステートメントを使用する前に、まず
Password Hashing in MySQL
を参照してください。MySQL 4.1
で変更されたパスワードフォーマット、そして特定の状況下では、もしパスワードを変更するとその後サーバーに接続することができなくなる、ということが起こり得ます。
SELECT CURRENT_USER()
を実行することによって、どのアカウントとしてサーバーが認証したのかを見ることができます。