現在の環境:
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
Passwordというフィールドがなく、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 Premium Software を使用した可視化操作中にエラーが発生したためです。 「フィールドリスト」に不明な列「パスワード」があります。 、ソフトウェア自体がパスワードを使用するため、簡単に操作できません。だからデータベースのコマンドラインに行き、次を実行します。
Use mysql;
次に、フィールド名を変更します。
ALTER TABLE user CHANGE authentication_string password text;
結局、それは正常です。