通常の説明 %はどのクライアントでも接続できることを意味します localhostはローカルコンピュータのみが接続できることを意味します
通常、ローカル データベースにアクセスできるユーザーには権限が与えられています。通常、他のマシンはローカル MySQL ポートへのアクセスを禁止されています。許可されている場合は、データベースにリモートからアクセスできないように、指定された IP アドレスを追加する必要があります。 1 はじめにMySQL を操作する際に、アカウントの % のみを作成して localhost 経由で接続できる場合と、できない場合があることに気付きました。オンラインで検索しても満足のいく答えが見つからなかったので、手動でテストしてみました。 2 2つの接続方法ここで言及する2つの接続方法は、mysqlコマンドを実行するときに-hパラメータにlocalhostまたはIPのどちらを入力するかを指します。2つの接続方法の違いは次のとおりです。 -hパラメータはlocalhostです -hパラメータがlocalhostの場合、実際にはソケット接続(デフォルトの接続方法)が使用されます。例は次のとおりです。 [mysql@mysql-test-83 ~]$ /usr/local/mysql57/bin/mysql -utest_user -p -hlocalhost パスワードを入力してください: ========= 省略 ============= mysql> ステータス /usr/local/mysql57/bin/mysql Ver 14.14 Distrib 5.7.21、EditLine ラッパーを使用した linux-glibc2.12 (x86_64) 用 接続ID: 9 現在のデータベース: 現在のユーザー: test_user@localhost SSL: 使用されていません 現在のページャ: stdout 出力ファイルの使用: '' 区切り文字の使用: ; サーバーバージョン: 5.7.21-log MySQL コミュニティサーバー (GPL) プロトコルバージョン: 10 接続: UNIX ソケット経由のローカルホスト
現在のユーザーから、ユーザーはxx@localhostであり、接続方法はUNIXソケット経由のLocalhostであることがわかります。 -hパラメータはIP -hパラメータがIPの場合、実際にはTCP接続が使用されます。例は次のとおりです。 [mysql@mysql-test-83 ~]$ /usr/local/mysql57/bin/mysql -utest_user -p -h127.0.0.1 パスワードを入力してください: ========= 省略 ============= mysql> ステータス -------------- /usr/local/mysql57/bin/mysql Ver 14.14 Distrib 5.7.21、EditLine ラッパーを使用した linux-glibc2.12 (x86_64) 用 接続ID: 11 現在のデータベース: 現在のユーザー: [email protected] SSL: 使用されている暗号は DHE-RSA-AES256-SHA です 現在のページャ: stdout 出力ファイルの使用: '' 区切り文字の使用: ; サーバーバージョン: 5.7.21-log MySQL コミュニティサーバー (GPL) プロトコルバージョン: 10 接続: TCP/IP経由の127.0.0.1 サーバー文字セット: utf8
現在のユーザーから、ユーザーが[email protected]であり、接続方法がTCP/IPであることがわかります。 3 バージョンの違いテスト方法は接続できるかどうかを確認することです。テストプロセスを見たくない場合は、最後までスクロールして結論を確認できます。 3.1 MySQL8.0ユーザーを作成 mysql> バージョンを選択します(); +-----------+ | バージョン() | +-----------+ | 8.0.11 | +-----------+ セット内の 1 行 (0.00 秒) mysql> 'test_user' によって識別されるユーザー test_user@'%' を作成します。 クエリは正常、影響を受けた行は 0 行 (0.07 秒) ローカルホストを使用してログイン [root@mysql-test-72 ~]# /usr/local/mysql80/bin/mysql -utest_user -p -hlocalhost パスワードを入力してください: MySQL モニターへようこそ。コマンドは ; または \g で終わります。 MySQL接続IDは9です サーバーバージョン: 8.0.11 MySQL コミュニティサーバー - GPL ========= 省略 ============= mysql> ステータス -------------- /usr/local/mysql80/bin/mysql バージョン 8.0.11 (x86_64 上の linux-glibc2.12 用) (MySQL コミュニティ サーバー - GPL) 接続ID: 9 現在のデータベース: 現在のユーザー: test_user@localhost SSL: 使用されていません 現在のページャ: stdout 出力ファイルの使用: '' 区切り文字の使用: ; サーバーバージョン: 8.0.11 MySQL コミュニティサーバー - GPL プロトコルバージョン: 10 接続: UNIX ソケット経由のローカルホスト ...
IPを使用してログイン [root@mysql-test-72 ~]# /usr/local/mysql80/bin/mysql -utest_user -p -h127.0.0.1 パスワードを入力してください: MySQL モニターへようこそ。コマンドは ; または \g で終わります。 MySQL接続IDは8です サーバーバージョン: 8.0.11 MySQL コミュニティサーバー - GPL ========= 省略 ============= mysql> ステータス -------------- /usr/local/mysql80/bin/mysql バージョン 8.0.11 (x86_64 上の linux-glibc2.12 用) (MySQL コミュニティ サーバー - GPL) 接続ID: 8 現在のデータベース: 現在のユーザー: [email protected] SSL: 使用されている暗号は DHE-RSA-AES128-GCM-SHA256 です 現在のページャ: stdout 出力ファイルの使用: '' 区切り文字の使用: ; サーバーバージョン: 8.0.11 MySQL コミュニティサーバー - GPL プロトコルバージョン: 10 接続: TCP/IP経由の127.0.0.1
結果にはMySQLバージョン8.0、localhostを含む%が表示されます 3.2 MySQL 5.7 % ユーザーを作成 db83-3306>>'test_user' によって識別されるユーザー test_user@'%' を作成します。 クエリは正常、影響を受けた行は 0 行 (0.00 秒)
ローカルホストを使用してログイン [mysql@mysql-test-83 ~]$ /usr/local/mysql57/bin/mysql -utest_user -p -hlocalhost ========= 省略 ============= mysql> ステータス /usr/local/mysql57/bin/mysql Ver 14.14 Distrib 5.7.21、EditLine ラッパーを使用した linux-glibc2.12 (x86_64) 用 接続ID: 9 現在のデータベース: 現在のユーザー: test_user@localhost SSL: 使用されていません 現在のページャ: stdout 出力ファイルの使用: '' 区切り文字の使用: ; サーバーバージョン: 5.7.21-log MySQL コミュニティサーバー (GPL) プロトコルバージョン: 10 接続: UNIX ソケット経由のローカルホスト ....
IPを使用してログイン [mysql@mysql-test-83 ~]$ /usr/local/mysql57/bin/mysql -utest_user -p -h127.0.0.1 パスワードを入力してください: ========= 省略 ============= mysql> ステータス -------------- /usr/local/mysql57/bin/mysql Ver 14.14 Distrib 5.7.21、EditLine ラッパーを使用した linux-glibc2.12 (x86_64) 用 接続ID: 11 現在のデータベース: 現在のユーザー: [email protected] SSL: 使用されている暗号は DHE-RSA-AES256-SHA です 現在のページャ: stdout 出力ファイルの使用: '' 区切り文字の使用: ; サーバーバージョン: 5.7.21-log MySQL コミュニティサーバー (GPL) プロトコルバージョン: 10 接続: TCP/IP経由の127.0.0.1 サーバー文字セット: utf8 ...
結果には、ローカルホストを含むMySQLバージョン5.7が表示されます。 3.3 MySQL5.6ユーザーを作成 db83-3306>>バージョンを選択(); +------------+ | バージョン() | +------------+ | 5.6.10-ログ | +------------+ セット内の 1 行 (0.00 秒) db83-3306>>'test_user' によって識別されるユーザー test_user@'%' を作成します。 クエリは正常、影響を受けた行は 0 行 (0.00 秒)
ローカルホストを使用してログイン [mysql@mysql-test-83 ~]$ /usr/local/mysql57/bin/mysql -utest_user -p -hlocalhost パスワードを入力してください: エラー 1045 (28000): ユーザー 'test_user'@'localhost' のアクセスが拒否されました (パスワード使用: YES)
IPを使用してログイン [mysql@mysql-test-83 ~]$ /usr/local/mysql57/bin/mysql -utest_user -p -h127.0.0.1 パスワードを入力してください: MySQL モニターへようこそ。コマンドは ; または \g で終わります。 MySQL接続IDは3です サーバーバージョン: 5.6.10-log MySQL コミュニティサーバー (GPL) ========= 省略 ============= mysql> ステータス -------------- /usr/local/mysql57/bin/mysql Ver 14.14 Distrib 5.7.21、EditLine ラッパーを使用した linux-glibc2.12 (x86_64) 用 接続ID: 3 現在のデータベース: 現在のユーザー: [email protected] SSL: 使用されていません 現在のページャ: stdout 出力ファイルの使用: '' 区切り文字の使用: ; サーバーバージョン: 5.6.10-log MySQL コミュニティサーバー (GPL) プロトコルバージョン: 10 接続: TCP/IP経由の127.0.0.1 ...... --------------
結果は、MySQL 5.6の%にlocalhostが含まれていないことを示しています。 3.4 MySQL5.1ユーザーを作成 mysql> バージョンを選択します(); +-----------+ | バージョン() | +-----------+ | 5.1.73 | +-----------+ セット内の 1 行 (0.00 秒) mysql> 'test_user' によって識別されるユーザー test_user@'%' を作成します。 クエリは正常、影響を受けた行は 0 行 (0.00 秒)
ローカルホストを使用してログイン [root@chengqm ~]# mysql -utest_user -p パスワードを入力してください: エラー 1045 (28000): ユーザー 'test_user'@'localhost' のアクセスが拒否されました (パスワード使用: YES) IPを使用してログイン [root@chengqm ~]# mysql -utest_user -p -h127.0.0.1 パスワードを入力してください: MySQL モニターへようこそ。コマンドは ; または \g で終わります。 MySQL接続IDは4901339です サーバーバージョン: 5.1.73 ソース配布 ========= 省略 ============= mysql> ステータス -------------- mysql Ver 14.14 Distrib 5.1.73、readline 5.1 を使用する redhat-linux-gnu (x86_64) 用 接続ID: 4901339 現在のデータベース: 現在のユーザー: [email protected] SSL: 使用されていません 現在のページャ: stdout 出力ファイルの使用: '' 区切り文字の使用: ; サーバーバージョン: 5.1.73 ソース配布 プロトコルバージョン: 10 接続: TCP/IP経由の127.0.0.1
結果は、%の5.1バージョンにはlocalhostが含まれていないことを示しています。 3.5 マリアDB10.3ユーザーを作成 db83-3306>>バージョンを選択(); +---------------------+ | バージョン() | +---------------------+ | 10.3.11-MariaDB ログ | +---------------------+ セット内の 1 行 (0.000 秒) db83-3306>>'test_user' によって識別されるユーザー test_user@'%' を作成します。 クエリは正常、影響を受けた行は 0 行 (0.001 秒)
ローカルホストを使用してログイン [mysql@mysql-test-83 ~]$ /usr/local/mariadb/bin/mysql -utest_user -p -hlocalhost パスワードを入力してください: エラー 1045 (28000): ユーザー 'test_user'@'localhost' のアクセスが拒否されました (パスワード使用: YES)
IPを使用してログイン [mysql@mysql-test-83 ~]$ /usr/local/mariadb/bin/mysql -utest_user -p -h127.0.0.1 パスワードを入力してください: MariaDB モニターへようこそ。コマンドは ; または \g で終わります。 MariaDB接続IDは12です サーバーバージョン: 10.3.11-MariaDB-log MariaDB サーバー ========= 省略 ============= MariaDB [(なし)]> ステータス -------------- /usr/local/mariadb/bin/mysql Ver 15.1 Distrib 10.3.11-MariaDB、Linux (x86_64) 用、readline 5.1 使用 接続ID: 12 現在のデータベース: 現在のユーザー: [email protected] SSL: 使用されていません 現在のページャ: stdout 出力ファイルの使用: '' 区切り文字の使用: ; サーバー: MariaDB サーバーバージョン: 10.3.11-MariaDB-log MariaDB サーバー プロトコルバージョン: 10 接続: TCP/IP経由の127.0.0.1
結果は、MariaDB 10.3の%にlocalhostが含まれていないことを示しています。 4 結論バージョン | ユーザーの % には localhost が含まれていますか? |
---|
MySQL 8.0 | 含む | MySQL 5.7 | 含む | MySQL 5.6 | 含まれません | MySQL 5.1 | 含まれません | マリアDB10.3 | 含まれません |
さて、今回の記事はこれで終わりです。今後とも123WORDPRESS.COMをよろしくお願いいたします。 以下もご興味があるかもしれません:- MySQL ユーザーのホスト属性を素早く変更する方法
- すべてのホストがmysqlにアクセスできるようにする方法
- MySQLがlocalhost経由でデータベースに接続できない問題に対する完璧な解決策
- MySQLがlocalhostを使用して接続できるがIPを使用して接続できない問題の解決策
- Mysqlがデータベースに接続するときのホストとユーザーのマッチングルールについての簡単な説明
|