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'@'%';
OSによっては、リモート接続を許可するためにポート3306を開く必要があります。
指示に従います(ステップ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
を探してくださいservice restart mysql
(あなたは自分のインターフェースのipsにbind addressを設定することができます。または私に0.0.0.0を使うように)
コンソールで実行されているmysqlサービスを再起動します。mysql -p
リモート接続用の安全なパスワードを持つユーザーを作成します。これを実行するには、mysqlで次のコマンドを実行します(mysqlコンソールにアクセスするLinuxユーザーで、mysql
を実行し、rootでパスワードを設定した場合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
それが役に立てば幸い