でユーザーを作成user@'%'
しましたpassword 'password
。しかし、私は接続できません:
mysql_connect('localhost:3306', 'user', 'password');
ユーザーを作成したところuser@'localhost'
、接続できました。どうして?「%」はどのホストからのものでもないのですか?
でユーザーを作成user@'%'
しましたpassword 'password
。しかし、私は接続できません:
mysql_connect('localhost:3306', 'user', 'password');
ユーザーを作成したところuser@'localhost'
、接続できました。どうして?「%」はどのホストからのものでもないのですか?
回答:
リモートで接続するには、MySQLバインドポート3306をmy.cnfのマシンのIPアドレスに接続する必要があります。次に、localhostと '%'の両方のワイルドカードでユーザーを作成し、すべてのDBにアクセス権を付与する必要があります。下記参照:
my.cnf(Windowsのmy.ini)
#Replace xxx with your IP Address
bind-address = xxx.xxx.xxx.xxx
その後
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';
その後
GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';
flush privileges;
OSによっては、リモート接続を許可するためにポート3306を開く必要がある場合があります。
mysql.default_port = <private instance port>
、php.iniで設定し127.0.0.1
、dbホスト名に使用しました
手順に従ってください(手順1〜3はWindowsでは不要です):
編集するmysql設定を見つけます。
/etc/mysql/my.cnf(Mysql 5.5)
/etc/mysql/conf.d/mysql.cnf(Mysql 5.6以降)
構成bind-address=127.0.0.1
ファイルの変更を検索しますbind-address=0.0.0.0
(バインドアドレスをインターフェイスIPの1つに設定するか、私のように0.0.0.0を使用できます)
コンソールで実行されているmysqlサービスを再起動します。
service restart mysql
リモート接続用の安全なパスワードを持つユーザーを作成します。これを行うには、mysqlで次のコマンドを実行します(mysqlコンソール実行に到達するLinuxユーザーのmysql
場合、およびroot runのパスワードを設定した場合mysql -p
):
GRANT ALL PRIVILEGES
ON *.* TO 'remote'@'%'
IDENTIFIED BY 'safe_password'
WITH GRANT OPTION;`
これで、名前user
とパスワードがsafe_password
あり、リモート接続が可能なユーザーが作成されました。
ユーザーはどのDBですか?この例を見て
mysql> create database databasename;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on databasename.* to cmsuser@localhost identified by 'password';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
質問に戻るには、「%」演算子はネットワーク内のすべてのコンピュータを意味します。
aspesaが示すように、ユーザーを作成または更新する必要があることも確信しています。すべてのmysqlユーザーを探します。
SELECT user,password,host FROM user;
ユーザーを設定するとすぐに、次のように接続できるはずです。
mysql -h localhost -u gmeier -p
それが役に立てば幸い
code
mysql_connect( 'localhost:3306'、 'user'、 'password'); code