localhost
%
と一致しません MySQLで。あるべきように見えますが、実際にはそうではありません。 [email protected]
、USAGE
の両方 特権、および各データベースの特権。
または、[email protected]
行う %
に一致 。ローカルホストにIPアドレスを使用すると、ローカルホストと同じように機能するように見えますが、そうではありません。 mysql.user
には2行必要です テーブル(およびmysql.db
にもあります 両方を有効にするには、テーブルを使用します。
localhostと127.0.0.1の違いを示すには:
mysql -h localhost
として接続する UNIXソケットインターフェイスを使用し、TCP/IPをバイパスします。これはパフォーマンスを少し向上させる可能性がありますが、上記のグラントマッチングに影響を与えます。
mysql -h 127.0.0.1
として接続することにより、ローカルTCP/IP接続を強制できます。 。次に、[email protected]%
。
したがって、ソケットインターフェースとTCP / IPインターフェースの両方で同じユーザー、パスワード、および特権を取得するには、すべてを実行する必要があります。 次のステートメントの:
GRANT USAGE ON *.* TO 'myuser'@'%' IDENTIFIED BY PASSWORD '*7733323232...'
GRANT USAGE ON *.* TO 'myuser'@'localhost' IDENTIFIED BY PASSWORD '*7733323232...'
GRANT ALL PRIVILEGES ON `db1`.* TO 'myuser'@'%'
GRANT ALL PRIVILEGES ON `db1`.* TO 'myuser'@'localhost'
GRANT ALL PRIVILEGES ON `db2`.* TO 'myuser'@'%'
GRANT ALL PRIVILEGES ON `db2`.* TO 'myuser'@'localhost'