MySQL 8.0 の新機能の落とし穴と解決策についての簡単な説明 (要約)

MySQL 8.0 の新機能の落とし穴と解決策についての簡単な説明 (要約)

1. ユーザーを作成して承認する

MySQL 8.0 では、ユーザーの作成と認証が以前とは異なります。厳密に言えば、異なるとは言えませんが、より厳格になったとしか言えません。MySQL 8.0 では、認証の前にユーザーの作成とパスワードの設定が必要です。

#まずユーザーを作成します。create user 'hong'@'%' identified by '123123';

#Authorize は、GRANT オプションを使用して、*.* のすべての権限を 'hong'@'%' に付与します。

元の 5.7 メソッドを引き続き使用すると、エラーが報告されます。

'123123' で識別される 'sroot'@'%' に *.* のすべての権限を付与します。

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

2. MySQL 8.0のリモート接続

MySQL 8.0 をインストールした後は、リモートで接続することはできません。これは、MySQL 8.0 がローカルホスト アクセスのみをサポートしているためです。リモートでアクセスできるようにするには、事前に設定する必要があります。

具体的な設定手順は以下のとおりです。

①MySQLにログインする

実行コマンドは、mysql -u root -pです。

Enterキーを押した後にパスワードを入力してください

② MySQLデータベースを選択

実行コマンドは次のとおりです: use mysql;

MySQL データベース内のユーザー情報を保存するユーザー テーブルを表示します。

③mysqlデータベースのユーザーテーブルで現在のルートユーザーの関連情報を表示する

実行コマンドは次のとおりです: select host,user,authentication_string,plugin from user;

コマンドを実行すると、表が表示されます。デフォルトでは、root ユーザーのホストは localhost であり、ローカル アクセスのみがサポートされ、リモート アクセスは許可されていないことを示しています。

④ ホストのデフォルト設定を変更する

実行コマンドは次のとおりです: update user set host='%' where user='root';

⑤ リフレッシュ

実行コマンドは次のとおりです: 権限をフラッシュします。

これですべてだと思っていましたが、Navicat を使用して MySQL にリモート接続すると、エラーを示すポップアップ ウィンドウが表示されました。


その理由は、mysql8 より前のバージョンの暗号化ルールは mysql_native_password であり、mysql8 以降のバージョンの暗号化ルールは caching_sha2_password であるためです。この問題を解決するには 2 つの方法があります。1 つは navicat ドライバーをアップグレードすること、もう 1 つは mysql ユーザー ログイン パスワードの暗号化ルールを mysql_native_password に復元することです。私は 2 番目の方法を使用します。

ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #暗号化ルールを変更する
 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; #ユーザーのパスワードを更新 FLUSH PRIVILEGES; #権限を更新

問題は解決しました。

mysql8.0 ユーザパスワード設定に関する注意事項

MySQL 8.0.11 では、mysql_native_password の代わりに caching_sha2_password がデフォルトの認証プラグインになります。この変更がサーバー操作およびクライアントやコネクタとのサーバー互換性にどのように影響するかについては、優先認証プラグインとしての caching_sha2_password を参照してください。 (https://dev.mysql.com/doc/refman/8.0/en/caching-sha2-pluggable-authentication.html から翻訳)

今日、新しいサービスにmysql8.0.11を設定してインストールするときに、いつものようにmysqlのパスワードを設定しました。設定が成功した後、シェルでmysql -u root -pと入力し、通常通りパスワードを入力します。しかし、phpmyadminまたはhttp://php.net/manual/zh/mysqli.real-connect.phpで接続を直接使用すると、接続できないというメッセージが表示されます。具体的なエラーメッセージは次のとおりです。

mysqli_real_connect(): サーバーがクライアントに不明な認証方法を要求しました [sha256_password]

検索して公式ドキュメントを見つけた後、バージョン 8.0.11 以降、ユーザー パスワードを設定するためのデフォルトの検証方法は、MySQL 5.7 以前のバージョンのように caching_sha2_password ではなくなったことがわかりました。MySQL 8.0.11 にアップグレードした後、元のプログラムが MySQL に接続できない場合は、MySQL コマンドライン クライアントで次のコマンドを使用して、MySQL 5.7 以前のバージョンのパスワード検証方法にすばやく設定できます。同時に、MYSQL 8.0.11 でのパスワードの変更方法も元の方法とは少し異なり、元のパスワード変更コマンドの一部は MySQL 8.0.11 では使用できません。

> MySQLを使用する 

> ALTER USER 'root'@'localhost' を 'your password' によって mysql_native_password で識別します。 

> 権限のフラッシュ; 

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MySQL 8.0 に移行する際の注意点 (要約)
  • MySQL 8.0.20でNavicatをインストールして接続する方法と注意すべき点
  • JDBC を使用して Mysql 8.0.11 に接続するときに発生するさまざまなエラーを解決する方法
  • MySQL 8.0の落とし穴の詳細な説明
  • MySql 8.0 と対応するドライバー パッケージの一致に関する注意事項

<<:  Angularの動的コンポーネントの詳細な説明

>>:  Nginxの現在の制限設定の詳細な説明

推薦する

MySQL ページングクエリ最適化テクニック

ページング クエリを使用するアプリケーションでは、LIMIT と OFFSET を含むクエリが非常に...

複数のパッケージソースから同時にパッケージをロードするようにnpmを設定する方法

目次1. ローカルストレージを構築する2. npmパッケージを作成し、プライベートリポジトリにアップ...

遭遇したいくつかのブラウザ互換性の問題について簡単に説明します

背景ブラウザの互換性の問題を解決するのは非常に面倒なことです。高度な技術はそれほど必要ありませんが、...

Antdesign-vueとsortablejsを組み合わせて、2つのテーブルをドラッグして並べ替える機能を実現

目次成果を達成するsortablejs の紹介具体的な実装成果を達成する最初は、antdesign ...

Dockerを使用して開発環境を構築する方法を素早く習得します

プラットフォームが成長し続けるにつれて、プロジェクトの研究開発は、開発者向けのさまざまな外部環境、特...

HTML iframe 使用状況の概要の収集

Iframe 使用状況の詳細な分析<iframe frameborder=0 width=17...

HTML DOM入門_PowerNode Javaアカデミー

DOMとは何ですか? JavaScript を使用すると、HTML ドキュメント全体を再構築できます...

Ubuntu mysqlログイン名とパスワードを表示および変更し、phpmyadminをインストールする

MySQLをインストールした後、ターミナルでmysql -u root -pと入力してEnterを押...

union (all) と limit および exists キーワードの使用法を理解するための MySQL シリーズチュートリアル

目次1.union: クエリ結果を追加できます1) すべてを結合: 重複を削除できません2) ユニオ...

Webスキル: 複数のIEバージョンの共存ソリューション IETester

私のおすすめ複数のIEバージョンの共存のためのソリューション以前に IE6、IE7、IE8 の共存に...

CSSは、閉じることができるマスクレイヤーを備えたポップアップウィンドウ効果を実装します。

実際の開発ではポップアップウィンドウがよく使われます。CSS3を勉強していたときに、閉じることができ...

React 並行関数エクスペリエンス (フロントエンド並行モード)

React は、開発者が Web およびモバイルベースのアプリケーションを作成するために使用するオ...

Linuxでファイルを削除してもスペースが解放されない問題の対処方法

問題の背景業務システムのサーバ監視システムからディスク使用率が90%に達したという早期警告通知が来た...

MySQL 5.7.21 のインストールとパスワード設定のチュートリアル

MySQL5.7.21のインストールとパスワード設定のチュートリアルは次のとおりです。公式リファレン...

MYSQL インストールの解凍バージョンと発生したエラーと解決策

1 インストールMYSQL 公式サイトから対応する解凍バージョンをダウンロードし、必要なディレクトリ...