現在の環境:
mysql> show variables like "%version%";
+-------------------------+------------------------------+
| Variable_name | Value |
+-------------------------+------------------------------+
| innodb_version | 5.7.13 |
| protocol_version | 10 |
| slave_type_conversions | |
| tls_version | TLSv1,TLSv1.1 |
| version | 5.7.13 |
| version_comment | MySQL Community Server (GPL) |
| version_compile_machine | x86_64 |
| version_compile_os | Linux |
+-------------------------+------------------------------+
8 rows in set (0.01 sec)
パスワード変更コマンドユーザー:
mysql> update user set password=PASSWORD("XXXX") where user="root";
ERROR 1054 (42S22): Unknown column 'password' in 'field list'
何か見逃しているのでしょうか?
答え1
MySQL 5.7 では、テーブル フィールドpassword
内のフィールドmysql.user
が削除され、フィールド名は になりましたauthentication_string
。
まずデータベースを選択します:
mysql> use mysql;
次に表を表示します。
mysql> show tables;
user
テーブルとそのフィールドが表示されます。
mysql> describe user;
password
という名前のフィールドは存在せず、パスワード フィールドの名前はであることに気づくでしょうauthentication_string
。そのため、次のようにします。
update user set authentication_string=password('XXXX') where user='root';
@Rui F Ribeiro の提案に従って、代わりに以下を実行することもできます:
mysql> SET PASSWORD FOR 'root' = PASSWORD('new_password');
答え2
MySQLのパスワード変更方法はSET PASSWORD
SET PASSWORD FOR 'root' = PASSWORD('new_password');
見るMySQL 5.7 リファレンスマニュアル / ... / SET PASSWORD 構文
SET PASSWORD ステートメントは、クリアテキスト (暗号化されていない) または暗号化された値として指定されたパスワードを MySQL ユーザー アカウントに割り当てます。
'auth_string' represents a cleartext password. 'hash_string' represents an encrypted password.
Rahul からの承認された回答では、ステートメントを使用してパスワードを更新する方法が示されていますDML
。
update user set authentication_string=password('XXXX') where user='root';
警告: これは公式でサポートされている方法ではありません。何をしているのかわからないと、問題が発生する可能性があります。忘れないでくださいFLUSH PRIVILEGES
。
ユーザーの作成、権限の変更、パスワードの変更など、ほとんどの操作では、高レベルのステートメントを使用する必要があります。高レベルのステートメントは使いやすく、多くの MySQL バージョンと互換性があるだけでなく、間違いを防ぐこともできます (もちろん、「NO_AUTO_CREATE_USER」SQL モードを設定することを忘れないでください)。Galera クラスターのような MyISAM に適さない環境でも、通常は問題なく動作します。
直接の DML ステートメントではなく、、、またはGRANT
をREVOKE
使用してください。SET PASSWORD
RENAME USER
更新: SET PASSWORD ... = PASSWORD('auth_string') 構文はMySQL 5.7.6 以降では非推奨将来の MySQL リリースでは削除される予定です。
答え3
mysqladmin -u user-name password -p "oldpassword" "newpass"
ログインできる場合はこれを試してください。""
動作しません。''
シングルクォートを試してください。
update user set password=PASSWORD("newpass") where User='ENTER-USER-NAME-HERE';
答え4
この問題に対して、私は単純で失礼な方法を使い、フィールド名をパスワードに変更しました。その理由は、私がMacのNavicatプレミアムソフトウェアを使用しているときに、視覚的な操作エラーが発生したためです。「フィールドリスト」の「パスワード」列が不明です。ソフトウェア自体がパスワードを使用しているため、簡単に操作できません。そのため、データベースのコマンドラインにルートし、実行します。
Use mysql;
次に、フィールド名を変更します。
ALTER TABLE user CHANGE authentication_string password text;
やっぱり普通。