GNU/Linux >> Linux の 問題 >  >> Linux

MySQLでパスワードによってIDENTIFIEDでGRANTを使用中にエラーが発生しました

質問 :多くのMySQLバージョンで、GRANTステートメントとともにIDENTIFIEDBY「パスワード」を何年も使用しています。ただし、新しいCentOS Streamリリース8のMySQLバージョン8.0.26でも同じことが失敗しました。以下は、完全なエラーメッセージです。何が問題になる可能性がありますか? –Tushar。

mysql> GRANT ALL PRIVILEGES ON qdb.* TO 'quser'@'localhost' IDENTIFIED BY 'qcuser123';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near IDENTIFIED BY 'quser123' at line 1

パスワードで識別されたGRANTを使用中にエラーが発生しました

Tushar、GRANTステートメントでのIDENTIFIED BYパスワードの使用は、MySQLバージョン5.7.6以降非推奨になりました。これは、CREATEUSERまたはALTERUSERでパスワードによるIDENTIFIEDを使用し、以下に示すようにGRANTPRIVILEGESを適用する必要があることを意味します。

ユーザーを作成してパスワードを割り当てます。

mysql> CREATE USER 'quser'@'localhost' IDENTIFIED BY 'qc123';
Query OK, 0 rows affected (0.12 sec)

GRANTを使用して特権を追加します:

mysql> GRANT ALL PRIVILEGES ON qdb.* TO 'quser'@'localhost';
Query OK, 0 rows affected (0.03 sec)

最新のMySQLでこの変更が行われる理由

この変更は、以下の理由で意味があります。

  • IDENTIFIED BYの使用 GRANT権限を持つパスワードは、アカウントの新しいパスワードとして指定されたパスワードを設定します。別のパスワードで既に存在するアカウントがある場合、IDENTIFIED BYパスワードとともにGRANT特権を実行すると、既存のパスワードが上書きされると想定します。つまり、GRANTからIDENTIFIEDを削除すると、アカウントには作成時に設定されたパスワードが残ります。
  • MySQLバージョン5.7.2の時点で、アカウントがすでに存在する場合、「パスワード」による識別は禁止されており、アカウントの作成中、つまりCREATE USERでのみ使用する必要があります。 またはALTER USER
  • GRANTは、ユーザーアカウントが存在しない場合、それを作成する場合があります。
    • NO_AUTO_CREATE_USER enabled
      • GRANTステートメントで指定されたアカウントが存在しない場合、IDENTIFIEDBYまたはIDENTIFIEDWITHを介して空でないパスワードが指定されない限り、GRANTはアカウントの作成に失敗します。
    • NO_AUTO_CREATE_USER disabled
      • GRANTステートメントで指定されたアカウントが存在しない場合、GRANTはアカウントを作成します。 IDENTIFIED BYでパスワードが指定されていない場合、これは安全ではない可能性があります。

最後に、IDENTIFIED BYパスワードを使用したGRANTは非推奨になり、CREATEUSERまたはALTERUSERを使用してユーザーアカウントを作成する必要があります。

StackOverflow経由。


Linux
  1. CentOS 7.xにMySQLをインストールする方法は?

  2. MySQLルートパスワードをリセットする

  3. Linux に MySQL をインストールする方法

  1. Notify-Send With Cronを使用していますか?

  2. gnome-keyring を Sudo として Git 認証情報ヘルパーを使用するとエラーが発生する

  3. Samba 共有での Windows 10 パスワード エラー

  1. Mcでワードラップを使用していますか?

  2. Ubuntu 13.04でターミナルを使用してMysqlにアクセスしますか?

  3. エラー:PleskMainDBException