MySQL5.7エラー1054(42S22):ユーザーの作成時に「フィールドリスト」の列「パスワード」が不明です



Mysql5 7 Error 1054



記事のディレクトリ


問題の説明

XiaobaiはMySQLの初心者です。ユーザーを作成するこのステップで、彼は、元のチュートリアルのステップに従って次のコードを入力すると、エラーが報告されることを発見しました。

mysql> insert into user -> (host,user,password,select_priv,insert_priv,update_priv) -> values('localhost','clover',PASSWORD('clover123'),'y','y','y')

エラーメッセージは



ERROR 1054 (42S22): Unknown column 'password' in 'field list'

間違った理由

MySQL5.7では、ユーザーテーブルのパスワードがauthentication_stringに置き換えられました。
password()暗号化関数は8.0.11で削除されました。代わりに、MD5()関数を使用できます。


解決

ここで、新しいメソッドを使用してユーザーを作成してみます。コードは次のとおりです。



mysql> create user 'clover'@'localhost' identified by 'clover123' Query OK, 0 rows affected (0.00 sec)

このコード行を使用して、「clover」という名前のユーザーを作成しました。hostの値は「localhost」です。このユーザーは「123」によって認証されます。つまり、「123」がパスワードです。

次に、このユーザーのアクセス許可を指定できます。ここでは、クローバーに5つのアクセス許可を付与します。つまり、select_priv、insert_priv、delete_priv、create_priv、drop_priv、コードは次のとおりです。

mysql> grant select,insert,delete,create,drop on *.* to 'clover'@'localhost' with grant option Query OK, 0 rows affected (0.00 sec)

更新が有効になります。コードは次のとおりです。



mysql> flush privileges Query OK, 0 rows affected (0.00 sec)

上記のコマンドを実行すると、認証テーブルが再ロードされます。このコマンドを使用しない場合、mysqlサーバーを再起動しない限り、新しく作成されたユーザーを使用してmysqlサーバーに接続することはできません。


検証結果

ホスト、ユーザー、authentication_stringの情報をuserテーブルに出力します。コードは次のとおりです。

mysql> select host,user,authentication_string from user +-----------+-----------+-------------------------------------------+ | host | user | authentication_string | +-----------+-----------+-------------------------------------------+ | localhost | root | *43F663C76794F376514023A48A1F53DBDEC540F3 | | localhost | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | localhost | clover | *664D2BC607BAA85C7DCA8E655CAB8BCE97951607 | +-----------+-----------+-------------------------------------------+ 3 rows in set (0.00 sec)

追加したばかりのユーザークローバーが正常に表示されていることがわかります。 authentication_stringは暗号化されたパスワードを示していることに注意してください。これは、最初に入力した実際のパスワードclover123とは異なります。

権限を見てください

mysql> select user,select_priv,insert_priv,delete_priv,create_priv,drop_priv,reload_priv from user +-----------+-------------+-------------+-------------+-------------+-----------+-------------+ | user | select_priv | insert_priv | delete_priv | create_priv | drop_priv | reload_priv | +-----------+-------------+-------------+-------------+-------------+-----------+-------------+ | root | Y | Y | Y | Y | Y | Y | | mysql.sys | N | N | N | N | N | N | | clover | Y | Y | Y | Y | Y | N | +-----------+-------------+-------------+-------------+-------------+-----------+-------------+ 3 rows in set (0.00 sec)

ご覧のとおり、ユーザークローバーに選択、挿入、削除、作成、削除の権限を付与したため、対応する場所にYが表示され、再読み込みの権限は付与されませんでした。デフォルトはNです。