localhost %と一致しません MySQLで。あるべきように見えますが、実際にはそうではありません。 example@sqldat.com 、USAGEの両方 特権、および各データベースの特権。
または、example@sqldat.com 行う %に一致 。ローカルホストに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接続を強制できます。 。次に、example@sqldat.com% 。
したがって、ソケットインターフェースと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'