web-dev-qa-db-ja.com

特権の付与に失敗しました

私は現在、以下を使用して新しいユーザーを定義しようとしています:

mysql> GRANT ALL PRIVILEGES ON simple_cms_development.* TO 'br'@'localhost' IDENTIFIED BY 'password';

ただし、これは失敗して次のように出力されます。

エラー1064(42000):SQL構文にエラーがあります。 1行目の「IDENTIFIED BY 'password」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください

MySQL 8.0.11を実行しています。

6
Brennan

MySQLドキュメントによると、この機能は廃止されました: https://dev.mysql.com/doc/refman/5.7/en/mysql-nutshell.html#mysql-nutshell-deprecations

アカウント管理ステートメントへの変更により、次の機能は廃止されました。それらは非推奨になりました:

  • GRANTを使用してユーザーを作成します。代わりに、CREATE USERを使用してください。このプラクティスに従うと、NO_AUTO_CREATE_USER SQLモードはGRANTステートメントにとって重要ではなくなるため、非推奨になりました。

  • GRANTを使用して、特権の割り当て以外のアカウントプロパティを変更する。これには、認証、SSL、およびリソース制限のプロパティが含まれます。代わりに、CREATE USERを使用してアカウント作成時にそのようなプロパティを確立するか、ALTER USERを使用して後で変更します。

解決策は、2つの別々のステートメントを使用することです。 1からALTER USER、次にGRANT privsの1秒。

ALTER USER 'br' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON simple_cms_development.* TO 'br'@'localhost';
8
Jacob H