なぜああ私はなぜMySQLに接続できないのですか?
mysql -u root -ptest101 -h xxx.xxx.xxx.xxx
ERROR 1130 (HY000): Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server
My.cnfには以下があります
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 0.0.0.0
私も以下を走った...
'UPDATE mysql.user SET Password = PASSWORD('test101') WHERE User = 'root';
FLUSH PRIVILEGES;
ホストマシンでmysql -u root -ptest101を使用してアクセスできますが、mysql -u root -ptest101 -h xxx.xxx.xxx.xxxは使用できません。
うわー...なぜこれが起こっているのですか?私はn ubuntjです12.04
mysql> SELECT Host FROM mysql.user WHERE User = 'root';
+---------------------------------------------+
| Host |
+---------------------------------------------+
| % |
| 127.0.0.1 |
| ::1 | |
| localhost |
+---------------------------------------------+
5 rows in set (0.00 sec)
あなたのroot
アカウント、およびこのステートメントはどのアカウントにも適用されますが、localhostアクセスでのみ追加されているかもしれません(これはお勧めです)。
これで確認できます。
SELECT Host FROM mysql.user WHERE User = 'root';
localhost
と127.0.0.1
の結果しか表示されない場合は、外部ソースから接続することはできません。他のIPアドレスが表示されていて、接続元のIPアドレスが表示されていない場合は、それも表示されます。
アクセス権を付与したい各システムのIPアドレスを追加してから、特権を付与する必要があります。
CREATE USER 'root'@'ip_address' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'ip_address';
%
が表示された場合は、それ以外にも "any remote source"という別の問題があります。ただし、すべてのシステムをrootで接続したい場合は、ワイルドカード%
を使用してアクセスを許可します。
CREATE USER 'root'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
最後に、権限をリロードすると、リモートアクセスができるはずです。
FLUSH PRIVILEGES;
次の2つのステップは私にとっては完全にうまくいきました:
ファイル/etc/mysql/my.cnf
からバインドアドレスをコメントアウトします。
#bind-address = 127.0.0.1
PhpMyAdminで次のクエリを実行します。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; FLUSH PRIVILEGES;
$mysql -u root --Host=127.0.0.1 -p
mysql>use mysql
mysql>GRANT ALL ON *.* to root@'%' IDENTIFIED BY 'redhat@123';
mysql>FLUSH PRIVILEGES;
mysql> SELECT Host FROM mysql.user WHERE User = 'root';
mysql> CREATE USER 'name' @ '%' IDENTIFIED BY 'passWord';クエリOK、影響を受けた0行(0.00秒)
mysql>すべての特権を。に 'name' @ '%'に付与します。クエリOK、影響を受けた0行(0.00秒)
mySQL> FLUSH PRIVILEGES;クエリOK、影響を受けた0行(0.00秒)
mySQL>
これが誰かに役立つことを願っています...