web-dev-qa-db-ja.com

リモートアクセス用のMySQLを追加するMySQL

user@'%'を使ってユーザーpassword 'passwordを作成しました。しかし、私はに接続することはできません:

mysql_connect('localhost:3306', 'user', 'password');

ユーザーuser@'localhost'を作成したときに、接続できました。どうして? '%'はどのホストからのものでもありませんか?

119
user2333586

リモートで接続するには、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を開く必要があります。

318
apesa

指示に従います(ステップ1から3は、Windowsでは不要です)。

  1. 編集するmysql設定を探します。

    /etc/mysql/my.cnf(Mysql 5.5)

    /etc/mysql/conf.d/mysql.cnf(Mysql 5.6以降)

  2. 設定ファイルのbind-address=127.0.0.1bind-address=0.0.0.0を探してくださいservice restart mysql(あなたは自分のインターフェースのipsにbind addressを設定することができます。または私に0.0.0.0を使うように)

  3. コンソールで実行されているmysqlサービスを再起動します。mysql -p

  4. リモート接続用の安全なパスワードを持つユーザーを作成します。これを実行するには、mysqlで次のコマンドを実行します(mysqlコンソールにアクセスするLinuxユーザーで、mysqlを実行し、rootでパスワードを設定した場合GRANT ALL PRIVILEGES ON *.* TO 'remote'@'%' IDENTIFIED BY 'safe_password' WITH GRANT OPTION;` )。

    __コード__

これで、リモート接続の機能を持つuserという名前とsafe_passwordというパスワードを持つユーザーがいるはずです。

14
MSS

ユーザーは何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

それが役に立てば幸い

11
caramba